Java Iterator(迭代器)

一、什么是迭代器

Java Iterator(迭代器)不是一个集合,它是一种用于访问集合的方法,可用于迭代 ArrayList 和 HashSet 等集合。

Iterator 是 Java 迭代器最简单的实现,ListIterator 是 Collection API 中的接口, 它扩展了 Iterator 接口。

我们看一下源码 接口Iterator

import java.util.function.Consumer;
public interface Iterator<E> {

    boolean hasNext();
    E next();
    default void remove() {
        throw new UnsupportedOperationException("remove");
    }
    //forEachRemaining()是java1.8新增的Iterator接口中的默认方法,
    //简单来说,就是对集合中剩余的元素进行操作,直到元素完毕或者抛出异常
    default void forEachRemaining(Consumer<? super E> action) {
        Objects.requireNonNull(action);
        while (hasNext())
            action.accept(next());
    }
}

类ListIterator实现Iterator接口

package java.util;
public interface ListIterator<E> extends Iterator<E> {
 
    boolean hasNext();
    E next();
    boolean hasPrevious();
    E previous();
    int nextIndex();
    int previousIndex();
    void remove();
    void set(E e);
    void add(E e);
}

1、获取一个迭代器

迭代器 it 的两个基本操作是 next 、hasNext 和 remove。

调用 it.next() 会返回迭代器的下一个元素,并且更新迭代器的状态。

调用 it.hasNext() 用于检测集合中是否还有元素。

调用 it.remove() 将迭代器返回的元素删除。

代码示例:

import java.util.ArrayList;
import java.util.Comparator;
import java.util.Iterator;

/**
 * @Description: $ArrayList案例演示
 * @Author: dyq
 * @Date: $2021年2月3日
 */
public class ArrayListTest {
    public static void main(String[] args) {
        // 初始化一个String类型的数组
        ArrayList<String> a = new ArrayList();

        // 设置 arraylist的容量大小  nsureCapacity() 方法将动态数组大小调整为可以存放 6 个元素。
        //Java 中的 ArrayList 可动态调整大小。也就是说,如果我们在 arraylist 中添加 3 个以上的元素,它将自动调整自身大小,
        a.ensureCapacity(6);

        //add()方法增加
        a.add("妈妈");
        a.add("爸爸");
        a.add("哥哥");
        a.add("姐姐");
        a.add("弟弟");
        a.add("妹妹");
        System.out.println("数组内容为:"+a);

        // 获取迭代器
        Iterator<String> it = a.iterator();
        // 输出集合中的第一个元素
        System.out.println(it.next());
        System.out.println(it.hasNext());

        System.out.println("forEachRemaining()遍历:");
        it.forEachRemaining(el -> System.out.println(el));//forEachRemaining()是java1.8新增的Iterator接口中的默认方法

        // 输出集合中的所有元素
        /*System.out.println("while遍历:");
        while(it.hasNext()) {
            System.out.println(it.next());
        }*/
        //删除
        it.remove();
        }
     } 

结果:

数组内容为:[妈妈, 爸爸, 哥哥, 姐姐, 弟弟, 妹妹]
妈妈
true
forEachRemaining()遍历:
爸爸
哥哥
姐姐
弟弟
妹妹
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北街风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值