迭代器的代码实现与迭代器的实现原理
迭代器的代码实现
package Collection_Demo01; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; /* java.util.Iterator接口:迭代器(对集合进行遍历)有两个常用的方法 boolean hasNext()如果仍有元素可以迭代,则返回true。 判断集合中还有没有下一个元素,有就返回true,没有就返回falseE next()返回迭代的下一个元素。 取出集合中的下一个元素 Iterator迭代器,是一个接口,我们无法直接使用,需要使用Iterator接口的实现类对象,获取实现类的方式比较特殊collection接口中有一个方法,叫iterator (),这个方法返回的就是迭代器的实现类对象 Iterator<E> iterator()返回在此collection 的元素上进行迭代的迭代器。 迭代器的使用步骤(重点)∶ 1.使用集合中的方法iterator()获取迭代器的实现类对象,使用Iterator接口接收(多态) 2.使用Iterator接口中的方法hasNext判断还有没有下一个元素 3.使用Iterator接口中的方法next取出集合中的下一个元素 */ public class Demo02_Collection { public static void main(String[] args) { //创建一个集合 Collection<String> coll = new ArrayList<>(); //往集合中添加元素 coll.add("李佳航"); coll.add("李晟"); coll.add("张伟"); coll.add("诸葛大力"); coll.add("胡强"); coll.add("欧阳莫非"); /* 1.使用集合中的方法iterator()获取迭代器的实现类对象,使用Iterator接口接收(多态)注意: Iterator<E>接口也是有泛型的,迭代器的泛型跟着集合走,集合是什么泛型,迭代器就是什么泛型 */ //多态 接口 实现对象 Iterator<String> iterator = coll.iterator(); /* 发现使用迭代器取出集合中元素的代码,是一个重复的过程所以我们可以使用循环优化 不知道集合中有多少元素,使用whiLe循环循环结束的条件, hasNext方法返回false */ while (iterator.hasNext()){ String e = iterator.next(); System.out.println(e); } System.out.println("*********************"); for (Iterator<String> iterator1 = coll.iterator();iterator1.hasNext();){ String next = iterator1.next(); System.out.println(next); } // // //2.使用iterator接口中的方法hanNext判断没有下一个元素 // boolean b = iterator.hasNext(); // System.out.println(b); // ///3.使用Iterator接口中的方法next取出集合中的下一个元素 // String next = iterator.next(); // System.out.println(next); // // b = iterator.hasNext(); // System.out.println(b); // next = iterator.next(); // System.out.println(next); // // b = iterator.hasNext(); // System.out.println(b); // next = iterator.next(); // System.out.println(next); // // b = iterator.hasNext(); // System.out.println(b); // next = iterator.next(); // System.out.println(next); // // b = iterator.hasNext(); // System.out.println(b); // next = iterator.next(); // System.out.println(next); // // b = iterator.hasNext(); // System.out.println(b); // next = iterator.next(); // System.out.println(next); // // b = iterator.hasNext(); // System.out.println(b); //没有元素,返回false // next = iterator.next(); //没有元素,在取出元素会抛出NoSuchELementException没有元素异常 // System.out.println(next); } }
迭代器的实现原理