Java集合-Iterator( 二 )


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




推荐阅读