Set key1 = map.keySet();
Iterator it1 = key1.iterator();
int cnt=0;
while (it1.hasNext()) {
cnt++;
}
此代码将导致无限循环的机会是多少?使用迭代器的无限循环
其实它会导致无限循环。我的怀疑是因为我没有采取it1.next();
,这是真的吗?
Set key1 = map.keySet();
Iterator it1 = key1.iterator();
int cnt=0;
while (it1.hasNext()) {
cnt++;
}
此代码将导致无限循环的机会是多少?使用迭代器的无限循环
其实它会导致无限循环。我的怀疑是因为我没有采取it1.next();
,这是真的吗?
是的。直到您不拨打it1.next()
它将永远不会移动到下一个项目。出现it1.next()
将返回您添加到列表/集合中的对象。
问题是,您不要在循环中调用it1.next()
,因此it1.hasNext()
始终为真。换句话说,你永远不会移动到下一个项目。
BTW,你不需要迭代器要archieve什么,尽量
int cnt=map.size();
实际上它是导致无限循环。我的怀疑是因为我没有采取
it1.next();
,这是真的吗?
是的,这是真的。
然而,你可以很容易找到一个集合的计数:
int cnt = map.size();
是的,我发现计数,它是84,所以它必须停止在84. :)谢谢 –
基本上itl.hasNext()总是返回基于未来价值的可用性收集处理一个布尔值。说指针在某个位置x,hasNext()返回true,如果在位置x旁边存在某个元素,则表示x + 1元素存在,因此您必须使用itl.next(),它返回当前元素在前面的例子中,next()返回当前对象的位置x,并将指针移动到下一个位置。
但是得到从收集要素的数量,您可以使用
collection_object.size()
是啊。这确实可以解释你的问题。 – Stultuske
是的。 It1对象没有迭代到导致无限循环的下一个对象。 –
如果你想知道集合中元素的数量,只需调用'key1.size()'! – isnot2bad