迭代器

在 Java 中,迭代器是用于遍历集合(如 ListSetMap 等)元素的工具。以下是几种常见的迭代器:

1. Iterator 接口

  • 介绍Iterator 是 Java 集合框架中最基础的迭代器接口,位于 java.util 包下。它提供了基本的遍历和删除元素的功能,所有实现 Collection 接口的集合类都可以通过 iterator() 方法获取 Iterator 对象。
  • 常用方法: hasNext():判断集合中是否还有下一个元素。next():返回集合中的下一个元素。remove():移除迭代器最后返回的元素,该方法必须在每次调用 next() 方法之后调用一次。
  • 示例代码
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class IteratorExample {
    public static void main(String[] args) {
        Collection<String> collection = new ArrayList<>();
        collection.add("apple");
        collection.add("banana");
        collection.add("cherry");

        Iterator<String> iterator = collection.iterator();
        while (iterator.hasNext()) {
            String element = iterator.next();
            System.out.println(element);
            if (element.equals("banana")) {
                iterator.remove();
            }
        }
        System.out.println(collection);
    }
}

2. ListIterator 接口

  • 介绍ListIteratorIterator 的子接口,专门用于遍历 List 集合。它在 Iterator 的基础上增加了向前遍历、添加元素和修改元素的功能。
  • 常用方法: hasPrevious():判断集合中是否还有前一个元素。previous():返回集合中的前一个元素。add(E e):在当前位置插入一个元素。set(E e):修改迭代器最后返回的元素。
  • 示例代码
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;

public class ListIteratorExample {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("apple");
        list.add("banana");
        list.add("cherry");

        ListIterator<String> listIterator = list.listIterator();
        while (listIterator.hasNext()) {
            String element = listIterator.next();
            System.out.println(element);
            if (element.equals("banana")) {
                listIterator.set("grape");
            }
        }
        System.out.println(list);

        while (listIterator.hasPrevious()) {
            String element = listIterator.previous();
            System.out.println(element);
        }
    }
}

3. Enumeration 接口

  • 介绍Enumeration 是 Java 早期用于遍历集合的接口,在 Java 集合框架出现之前就已经存在。它主要用于遍历 VectorHashtable 等旧的集合类。
  • 常用方法: hasMoreElements():判断集合中是否还有更多元素。nextElement():返回集合中的下一个元素。
  • 示例代码
import java.util.Enumeration;
import java.util.Vector;

public class EnumerationExample {
    public static void main(String[] args) {
        Vector<String> vector = new Vector<>();
        vector.add("apple");
        vector.add("banana");
        vector.add("cherry");

        Enumeration<String> enumeration = vector.elements();
        while (enumeration.hasMoreElements()) {
            String element = enumeration.nextElement();
            System.out.println(element);
        }
    }
}

4. Spliterator 接口

  • 介绍Spliterator 是 Java 8 引入的一个新接口,用于支持并行遍历和分割集合元素。它可以将一个集合分割成多个部分,每个部分可以由不同的线程并行处理,从而提高遍历效率。
  • 常用方法: tryAdvance(Consumer<? super T> action):对集合中的下一个元素执行指定的操作。forEachRemaining(Consumer<? super T> action):对集合中剩余的所有元素执行指定的操作。trySplit():尝试将集合分割成两部分,并返回一个新的 Spliterator 对象。
  • 示例代码
import java.util.ArrayList;
import java.util.Spliterator;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;

public class SpliteratorExample {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("apple");
        list.add("banana");
        list.add("cherry");

        Spliterator<String> spliterator = list.spliterator();
        Stream<String> stream = StreamSupport.stream(spliterator, false);
        stream.forEach(System.out::println);
    }
}

总结

  • Iterator 是最基础的迭代器,适用于所有实现 Collection 接口的集合类。
  • ListIteratorIterator 的扩展,专门用于 List 集合,支持双向遍历和元素修改。
  • Enumeration 是 Java 早期的迭代器,主要用于旧的集合类。
  • Spliterator 是 Java 8 引入的迭代器,支持并行遍历和分割集合元素。
Java集合框架 文章被收录于专栏

Java集合框架是Java提供的一组用于存储和操作数据的类和接口,它位于java.util包中,为开发者提供了强大且灵活的数据存储和处理能力。以下将从整体架构、主要接口、常用实现类、使用场景以及示例代码等方面详细介绍Java集合框架。

全部评论

相关推荐

评论
2
1
分享

创作者周榜

更多
牛客网
牛客企业服务