List<String> list = new ArrayList<>(); list.add("123");list.add("456");list.add("789"); Iterator<String> iterator = list.iterator(); while(iterator.hasNext()) { String value = https://www.isolves.com/it/cxkf/yy/JAVA/2020-08-31/iterator.next(); if(value.equals("456")){ iterator.remove(); }}
forEachRemaining()forEachRemaining()方法,可以迭代Iterator内部剩余的元素,对于每个元素,调用作为参数传递给forEachRemaining()的Lambda表达式,下面是代码:
List<String> list = new ArrayList<>();list.add("Jane");list.add("Heidi");list.add("Hannah"); Iterator<String> iterator = list.iterator(); iterator.forEachRemaining((element) -> { System.out.println(element);});
ListIteratorJava 还有一个接口ListIterator继承了Iterator接口,ListIterator接口,它表示一个双向迭代器,意味着可以向前和向后迭代元素的迭代器 。
这儿不详细讲解,用一个例子说明怎么使用:
List<String> list = new ArrayList<>();list.add("Jane");list.add("Heidi");list.add("Hannah"); ListIterator<String> listIterator = list.listIterator(); while(listIterator.hasNext()) { System.out.println(listIterator.next());} while(listIterator.hasPrevious()) { System.out.println(listIterator.previous());}
上面可以看到,第一个例子ListIterator向后迭代,第二个例子向前迭代 。
实现Iterator接口如果有一个特殊的、定制的集合类型,那么可以自己实现Iterator接口来创建一个迭代器,该迭代器可以遍历自定义集合的元素 。在本节中,将展示一个超简单的Java迭代器接口的定制实现,将了解实现迭代器接口的外观 。将为其实现迭代器的集合是一个标准的List,它不是一个完全完美的实现,因为它不能在迭代期间检测到列表内容的更改,但是它足以让您了解迭代器实现的外观,下面是代码:
import java.util.Iterator;import java.util.List; public class ListIterator <T> implements Iterator<T> { private List<T> source = null; private int index = 0; public ListIterator(List<T> source){ this.source = source; } @Override public boolean hasNext() { return this.index < this.source.size(); } @Override public T next() { return this.source.get(this.index++); } }
下面是一个在上面的ListIterator的迭代过程中它的外观的示例:
import java.util.ArrayList;import java.util.List; public class ListIteratorExample { public static void main(String[] args) { List<String> list = new ArrayList(); list.add("one"); list.add("two"); list.add("three"); ListIterator<String> iterator = new ListIterator<>(list); while(iterator.hasNext()) { System.out.println( iterator.next() ); } }}
参考:http://tutorials.jenkov.com/java/lambda-expressions.html
http://tutorials.jenkov.com/java-collections/iterator.html
推荐阅读
- Google开源Java图片处理类库Thumbnail
- JavaScript 各种遍历方式详解
- JavaScript的宏任务和微任务
- 「OOM」Java heap space原因与解决
- 一个用Java实现的超轻量级RESTful Web服务示例
- 微信开发最新Java SDK来了:WxJava3.9.0
- JavaWeb - 开发环境搭建和 Shell 编程
- 分析网页 JavaScript Bundles 的几种方法
- Java开发中的支付业务简易流程
- 一文读懂jar包的小秘密