Java 使用迭代器时的无限循环

Java 使用迭代器时的无限循环,java,iterator,Java,Iterator,此代码导致无限循环的可能性有多大 事实上,它导致了无限循环。我怀疑这是因为我没有使用it1.next(),是真的吗?是的。除非您不调用it1.next(),否则它将永远不会转到下一项。因为it1.next()将返回您在列表/集合中添加的对象。问题是,您没有在循环中调用it1.next(),因此it1.hasNext()始终为真。换句话说,您永远不会移动到下一个项目 顺便说一句,你不需要迭代器来完成你想归档的东西,试试看 Set key1 = map.keySet(); Iterator it1

此代码导致无限循环的可能性有多大


事实上,它导致了无限循环。我怀疑这是因为我没有使用
it1.next(),是真的吗?

是的。除非您不调用
it1.next()
,否则它将永远不会转到下一项。因为
it1.next()
将返回您在列表/集合中添加的对象。

问题是,您没有在循环中调用
it1.next()
,因此
it1.hasNext()
始终为真。换句话说,您永远不会移动到下一个项目

顺便说一句,你不需要迭代器来完成你想归档的东西,试试看

Set key1 = map.keySet();
Iterator it1 = key1.iterator();
int cnt=0;
while (it1.hasNext()) {
  cnt++;
}
事实上,它导致了无限循环。我怀疑这是因为我没有使用
it1.next(),是真的吗

是的,这是真的

但是,您可以发现集合的计数要容易得多:

int cnt=map.size();
基本上,itl.hasNext()总是根据集合中要处理的下一个值的可用性返回一个布尔值。假设指针位于某个位置x,hasNext()返回true,如果位置x旁边存在某个元素,我的意思是x+1元素存在

因此必须使用itl.next(),它返回集合中的当前元素,并将指针向前移动1。因此,根据前面的示例,next()返回当前对象的位置x,并将指针移动到下一个点

但是,要从集合中获取元素数,可以使用

int cnt = map.size();

是的。这确实可以解释你的问题。是的。It1对象没有迭代到下一个对象,从而导致无限循环。如果您想知道集合中的元素数,只需调用
key1.size()
!其他一切都很好,但我得到了两张反对票,这很令人伤心。我的问题严重吗?标准很低?实际上我发现这个问题没有什么问题。当然,这是一个新手问题,但它写得很好,问题也很清楚。是的,我找到了计数,它是84,所以它一定停在了84。:)谢谢
 collection_object.size()