使用迭代器时无限循环
Infinite loop while using iterator
Set key1 = map.keySet();
Iterator it1 = key1.iterator();
int cnt=0;
while (it1.hasNext()) {
cnt++;
}
此代码导致无限循环的可能性有多大?
实际上是死循环。我怀疑是因为我没有服用 it1.next();
,是真的吗?
是的。在您不调用 it1.next()
之前,它永远不会转到下一个项目。因为 it1.next()
将 return 您在 list/set.
中添加的对象
问题是,您没有在循环中调用 it1.next()
,因此 it1.hasNext()
始终为真。换句话说,您永远不会移动到下一个项目。
顺便说一句,你不需要迭代器来实现你想要的东西,试试
int cnt=map.size();
Actually it is resulting in infinite loop. My doubt is it is because I am not taking it1.next();
, is it true?
是的,这是真的。
但是,您可以更容易地找到集合的计数:
int cnt = map.size();
基本上 itl.hasNext() 始终 return 一个布尔值,该值基于集合中要处理的下一个值的可用性。假设指针在某个位置 x,hasNext() return 如果位置 x 旁边存在某个元素,则为真,我的意思是存在 x+1 个元素,
所以你必须使用itl.next(),它return是集合中的当前元素并将指针向前移动1。所以根据我们前面的例子,next() returns当前对象a位置x,移动指针到下一个点。
但是,要从集合中获取元素的数量,您可以使用
collection_object.size()
Set key1 = map.keySet();
Iterator it1 = key1.iterator();
int cnt=0;
while (it1.hasNext()) {
cnt++;
}
此代码导致无限循环的可能性有多大?
实际上是死循环。我怀疑是因为我没有服用 it1.next();
,是真的吗?
是的。在您不调用 it1.next()
之前,它永远不会转到下一个项目。因为 it1.next()
将 return 您在 list/set.
问题是,您没有在循环中调用 it1.next()
,因此 it1.hasNext()
始终为真。换句话说,您永远不会移动到下一个项目。
顺便说一句,你不需要迭代器来实现你想要的东西,试试
int cnt=map.size();
Actually it is resulting in infinite loop. My doubt is it is because I am not taking
it1.next();
, is it true?
是的,这是真的。
但是,您可以更容易地找到集合的计数:
int cnt = map.size();
基本上 itl.hasNext() 始终 return 一个布尔值,该值基于集合中要处理的下一个值的可用性。假设指针在某个位置 x,hasNext() return 如果位置 x 旁边存在某个元素,则为真,我的意思是存在 x+1 个元素,
所以你必须使用itl.next(),它return是集合中的当前元素并将指针向前移动1。所以根据我们前面的例子,next() returns当前对象a位置x,移动指针到下一个点。
但是,要从集合中获取元素的数量,您可以使用
collection_object.size()