迭代器Iterator,用于遍历集合元素
常用方法:
boolean hasNext();判断集合是否还有其他元素可以遍历
E next:返回迭代的下一个元素
remove:删除由next()迭代过的元素
ArrayList<Integer> list = new ArrayList<>();
for (int i = 0; i < 7; i++) {
list.add((int)(Math.random()*100));
}
//1.集合的遍历 基本for循环
System.out.println("-----------基本for--------------");
for (int i = 0; i <list.size() ; i++) {
System.out.println(list.get(i));
}
//2.增强for循环//冒号后面放集合 ,冒号前面放集合元素
System.out.println("------------增强for-------------");
for(Integer integer:list){
System.out.println(integer);
}
//面试题
/*
int[] i=new int[]{1,2,3};
for (int o:i){
System.out.println(o);
}
*/
//3.foreach方法 只能用作集合
System.out.println("-------------foreach-------------");
//1.
list.forEach(o -> System.out.println(o));//(o -> 接收这个o)
//2.
// list.forEach(new Consumer<Integer>() {//
// @Override
// public void accept(Integer integer) {
// System.out.println(integer);
// }
// });
//4.迭代器 有更多的方法 相比foreach功能更多
System.out.println("---------------迭代器------------");
//创建Integer类型的迭代器对象
Iterator<Integer> iterator=list.iterator();
//判断是否有下一个元素
while (iterator.hasNext()){
//获取集合中的元素
Integer str = iterator.next();
System.out.println(str);
//判断删除大于50的所有元素
//if (iterator.next()>50){
//用迭代器遍历出来的元素,必须使用 迭代器的remove方法 删除,而不能使用集合方法
//注意!一定要用迭代器定义的remove方法,不能使用集合的remove方法,否则会抛出异常。
//list.remove(iterator.next());//此处是调用的集合的remove方法,会出现错误
//iterator.remove();
//}
}
System.out.println(list);
}
面试题(****):
增强for循环原理是迭代器,而迭代器是专门用来遍历集合的,但数组不是集合,为什么增强for循环可以遍历数组?
经过反编译(通过观察.class文件)得出结果:使用增强for循环遍历数组,会解析成一般for循环,但遍历集合时,会解析为迭代器