JAVA Iterator迭代器 作者:马育民 • 2020-01-27 18:38 • 阅读:10045 # 概述 在程序开发中,经常需要 **遍历集合** 中的所有元素。 针对这种需求,JAVA提供了接口`java.util.Iterator`。 由于`Iterator`主要用于迭代访问(即遍历)`Collection`中的元素,因此`Iterator`对象也被称为 **迭代器**。 ### 作用 `Iterable` 与 `Iterator` 搭配使用,实现自定义集合 # 获取迭代器 想要遍历 Collection 集合,那么就要从 Collection 获取该迭代器,方法如下: - `public Iterator iterator()`: 获取迭代器 # 常用方法 - `public E next()`:返回迭代的下一个元素。 - `public boolean hasNext()`:如果仍有元素可以迭代,则返回 true。 - `remove()`:移除某个元素 ### 例子 ```java public class IteratorDemo { public static void main(String[] args) { // 使用多态方式 创建对象 Collection coll = new ArrayList(); // 添加元素到集合 coll.add("串串星人"); coll.add("吐槽星人"); coll.add("汪星人"); //遍历 //使用迭代器 遍历 每个集合对象都有自己的迭代器 Iterator it = coll.iterator(); // 泛型指的是 迭代出 元素的数据类型 while(it.hasNext()){ //判断是否有迭代元素 String s = it.next();//获取迭代出的元素 System.out.println(s); } } } ``` 如果集合没有元素了,还继续使用迭代器的next方法,将会抛出 `java.util.NoSuchElementException` 异常。 # 例子 实现简单的 ArrayList ``` package itrable.简单ArrayList; import java.util.Iterator; public class MyArrayList { private Object[] data ; private int index = 0; public MyArrayList(int len) { data = new Object[len]; } public void add(E e){ data[index] = e; ++index; } public Iterator getIt(){ return new It(); } private class It implements Iterator { /** * 初始位置 */ private int pos = -1; @Override public boolean hasNext() { // 下一个位置,小于数组长度,就认为有下一个 return pos + 1 < data.length; } @Override public E next() { ++pos; E ret = (E)data[pos]; return ret; } } } ``` ### 测试类 ``` public class Test { public static void main(String[] args) { MyArrayList list = new MyArrayList(4); list.add("李雷"); list.add("韩梅梅"); list.add("lucy"); list.add("lili"); Iterator it = list.getIt(); while(it.hasNext()){ System.out.println(it.next()); } } } ``` 原文出处:http://malaoshi.top/show_1EF4sJTuhFx2.html