java iterator hasnext() 死循环

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java iterator hasnext() 死循环相关的知识,希望对你有一定的参考价值。

iterator= userfactory.FindTickets(begin, destination);
while(iterator.hasNext())
num++;

其中userfactory.FindTickets(begin, destination)返回的是iterator类型。
调试的时候总是跳不出while,但是实际上iterator中只有两个元素。
还请高手帮忙啊

while(iterator.hasNext()) //判断时候还有东西
num++;
iterator.next(); //有的话才取值

你原来的那样他不取,不取就还有,当然一直循环了。。。
参考技术A 没有移动next永远都在第一个。使用就成了死循环
while(iterator.hasNext())
num++;
iterator.next();
参考技术B while里没做处理,必须要做iterator.next(); ,这样iterator才能移动,不然永远出不来! 参考技术C while(iterator.hasNext())
num++;
iterator.next();

Java中Set集合怎样用for遍历?


//集合,基本都用iterator遍历。
//假设有个treeSet
TreeSet ts=new TreeSet();
ts.add("dd");
Iterator it=ts.iterator();
while(it.hasNext())
    System.out.print(it.next());

参考技术A for (Iterator it = set.iterator(); it.hasNext();)
System.out.println(((User)it.next()).getName());
参考技术B hashset用法: package set;import java.util.HashSet;
import java.util.Iterator;
public class hashsetTest
public static void main(String[] str)
HashSet hs=new HashSet();//不能存放相同元素,没有顺序
//添加
hs.add(11);
hs.add(11);
hs.add(44);
hs.add(23);
hs.add(98); //大小
System.out.println("大小:"+hs.size());//大小为4 //遍历
/*for(int i=0;i<hs.size();i++)
System.out.println(hs.get(i));
*/ //没有get函数 //删除
hs.remove(44); //修改,不行,没有顺序
//hs.set(); //检索
System.out.println("23的存在性:"+hs.contains(23)); Iterator ite=hs.iterator();//将hs转换为一个可遍历的对象Iterator
while(ite.hasNext())
Integer integer=(Integer)ite.next();
System.out.println(integer);

treeset用法: package set;import java.util.Collections;
import java.util.Iterator;
import java.util.TreeSet;
public class treesetTest
public static void main(String[] str)
//TreeSet ts=new TreeSet();//不能存放相同元素,默认升序排列
TreeSet ts=new TreeSet(Collections.reverseOrder());//降序
//添加
ts.add(23);
ts.add(23);
ts.add(45);
ts.add(12);
ts.add(86); //删除
ts.remove(86); //检索
System.out.println("23的存在性:"+ts.contains(23)); //大小
System.out.println("大小:"+ts.size()); //遍历
/*for(int i=0;i<ts.size();i++)
System.out.println(ts.get(i));
*/ //没有get函数 Iterator ite=ts.iterator();
while(ite.hasNext())
Integer integer=(Integer)ite.next();
System.out.println(integer);




以上是关于java iterator hasnext() 死循环的主要内容,如果未能解决你的问题,请参考以下文章

如何判断java集合框架list是不是为空

Iterator hasNext() ,next(),remove()解析

Java中Set集合怎样用for遍历?

java中的iterator迭代器

JAVA集合接口及类

java提高篇(三十)-----Iterator