迭代器方法:(把迭代器想象成抓娃娃机的爪子)
hasNext() 问是否有元素可遍历,如果有元素可以遍历,返回true,否则返回false
工作原理:这一个迭代的过程是这样的,获取到迭代器时候迭代器有个指针,初始时
指向集合的第一个元素。然后一个个的按顺序遍历,最后移动到集合中没有元素了。
(这是看源代码看的)
next() 获取元素//如果判断有那么就用该方法开始抓,一次只能抓一个
工作原理:
void remove() 移除迭代器最后一次返回的元素(看下面代码
import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class EX10 { public static void main(String[] args) { Collection c = new ArrayList(); c.add("狗娃"); c.add("狗剩"); c.add("铁蛋"); Iterator it = c.iterator();//返回一个迭代器 System.out.println("师范有元素可以遍历? " + it.hasNext()); while(it.hasNext()){ System.out.println("获取元素:" + it.next());//一次一个 } System.out.println(); Collection c1 = new ArrayList(); c1.add("狗娃"); c1.add("狗剩"); c1.add("铁蛋"); Iterator it1 = c1.iterator(); while (it1.hasNext()){ it1.next(); it1.remove(); } System.out.println("移除之后的结果是:" + c1); //最后输出的是空集合 /*为什么iterator() 方法返回的是一个接口类型,为什么接口又可以调用方法? iterator 实际上是返回iterator 接口的实现类方法。 实际上是多态的应用: nterface Moeny{ public void print(); } class Worker implements Moeny{ @Override public void print() { System.out.println("工人正在赚钱"); } } class Demo { public static void main(String[] args) { Moeny m = test(); m.print(); } public static Worker test(){ return new Worker(); } } */ } }
时间: 2024-10-11 16:17:03