不同于以往在基础篇章所讲解的遍历方法,集合也有其他种类不同的遍历方法
主要分为三大类:
1:迭代器遍历 public Iterator iterator<E>
方法:
1> bollean hasNext() 判断下一个的集合当中是否仍然含有元素,返回值是一个bollean类型的
2> E next() 对于当前集合当中的元素进行逐个输出,如果使用次数过多,那么就会出现元素不存在异常
//使用多态,将接口用实现类来进行实现 Collection<student> stu =new ArrayList<>(); stu.add(new student("张三",23)); stu.add(new student("李四",24)); stu.add(new student("王五",25)); //1>迭代器遍历 Iterator<student> iterator = stu.iterator(); // boolean b = iterator.hasNext(); //返回一个布尔类型的数值,以此判断下一个循环当中是否仍然含有元素 //通常将两者结合起来,当作while循环进行使用 while (iterator.hasNext()){ student next = iterator.next(); System.out.println(next); }
2:for循环加强
for(集合对应的泛型类型 对象名称:集合)
//2>for循环加强版 for(student x:stu){ System.out.println(x); } //底层的源码,仍然使用的是迭代器的遍历方式
3:foreach遍历
集合对象名称直接进行调用:
num.foreach(内部需要一个接口的类型)
我们可以先使用匿名内部类(new Consumer<E> )进行对接口实现,重写。
//3>foreach遍历 stu.forEach(new Consumer<student>() { @Override public void accept(student student) { } });
之后再将其转变成为一个函数表达式的类型,将会变得更加的简单 (lamada)
//3>foreach遍历 stu.forEach(new Consumer<student>() { @Override public void accept(student student) { } }); stu.forEach(stu1 -> System.out.println(stu1));
但后面两个的基础都仍然还是迭代器作为一个基础