集合的通用遍历方式:
1.迭代器
2.增强for循环
3.foreach方法
增强for循环内部原理就是iterator迭代器,foreach方法源码调用了增强for循环。
public class CollectionTest2 {
public static void main(String[] args) {
//以多态的形式创建集合对象,调用单例集合中的共有方法
/*
public boolean hasNext() 如果迭代具有更多元素,则返回 true 。
public E next() 返回迭代中的下一个元素。
*/
Collection<Student> c=new ArrayList<>();
c.add(new Student("张三",18));
c.add(new Student("李四",22));
c.add(new Student("王五",25));
//1.获取迭代器
Iterator<Student> it = c.iterator();
//2.循环判断,集合中是否还有元素
while (it.hasNext()){
//3.调用next方法,将元素取出
Student stu = it.next();
System.out.println(stu);
}
//总结:hashNext():判断集合中是否还有元素
//next():取出集合元素,并将指针向后移动 注意:在循环过程中,next方法最好只调用一次
/*
增强for循环
简化迭代器的代码书写,内部原理就是iterator迭代器
*/
System.out.println("---------------------");
for (Student stu:c){
System.out.println(stu);
}
/*
foreach方法遍历集合
*/
System.out.println("----------------");
c.forEach(new Consumer<Student>() {
@Override
public void accept(Student student) {
System.out.println(student);
}
});
System.out.println("----------------");
//lambda表现形式
c.forEach(student -> System.out.println(student));
}
}
输出结果:
Student{name = 张三, age = 18}
Student{name = 李四, age = 22}
Student{name = 王五, age = 25}
---------------------
Student{name = 张三, age = 18}
Student{name = 李四, age = 22}
Student{name = 王五, age = 25}
----------------
Student{name = 张三, age = 18}
Student{name = 李四, age = 22}
Student{name = 王五, age = 25}
----------------
Student{name = 张三, age = 18}
Student{name = 李四, age = 22}
Student{name = 王五, age = 25}
Process finished with exit code 0