集合的专有遍历方式:迭代器遍历
Iterator :接口中有以下的方法:
boolean hasNext() :如果有元素可以迭代,那么返回true,否则返回false
Object next()返回迭代的下一个元素。
存储String类型的元素
例句: Iterator it = c.iterator() ;//通过集合获取迭代器
System.out.println(it.next()); //获取下一个元素
System.out.println(it.next());//获取下一个元素
//java.util.NoSuchElementException :此处已经没有元素了,但是还要获取,出现了这个异常
对代码进行改进://改进:需要判断是否有下一个可以迭代的元素,有,就获取,没有,不管
while(it.hasNext()) {
Object obj = it.next() ; //Object obj = new Objct();
//需求:打印字符串同时,获取长度
// String str = (String) obj ;
String str = (String)(it.next()) ;
System.out.println(str+"---"+str.length());
1)it.next(),只使用一次即可,使用多次,会出现问题(it.next(),每次使用的时候都是返回一个对象)
2)遍历的时候使用的while循环,可不可以使用for循环呢?
Iterator it = c.iterator();// 获取迭代器
while (it.hasNext()) {//这种方式才是我们的模板代码// 遍历
//System.out.println(((Student) it.next()).getName() + "----" + ((Student) it.next()).getAge());
Student s =(Student)it.next() ;
System.out.println(s.getName()+"---"+s.getAge());
}
System.out.println("-----------------------------");
//下面很少用
for(Iterator it2 = c.iterator() ; it2.hasNext();) {
Student s =(Student)it2.next() ;
System.out.println(s.getName()+"---"+s.getAge());
}
}