Iterator 和 ListIterator 如何使用,有什么区别?

目录

一、什么是 Iterator

二、什么是 ListIterator

三、Iterator 和 ListIterator 有什么区别


一、什么是 Iterator

Java中的Iterator是一种接口,用于迭代遍历集合或数组中的元素。它定义了一组方法来实现对一个集合元素的遍历,并且能够在遍历时移除集合中的元素。

Iterator接口包含以下几个方法:

  • hasNext():如果在迭代序列中还存在下一个元素,则返回true。
  • next():返回迭代序列中的下一个元素。
  • remove():从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。

使用Iterator可以在不知道集合大小和内容的情况下遍历它们。同时,Iterator也是支持并发访问的,可以在多线程环境下使用。

下面是一个使用Iterator遍历List的示例代码:

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

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

        System.out.println("使用for循环遍历List:");
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }

        System.out.println("使用Iterator遍历List:");
        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()) {
            String element = iterator.next();
            System.out.println(element);
        }
    }
}

在这个示例中,我们首先创建了一个List对象,并添加了三个元素。然后,我们使用for循环和Iterator分别遍历List中的元素,并输出到控制台上。最终输出结果如下:

使用for循环遍历List:
apple
banana
orange
使用Iterator遍历List:
apple
banana
orange

二、什么是 ListIterator

ListIterator是Java中List接口的一个迭代器,它扩展了Iterator接口,提供了更强大和灵活的遍历功能。与Iterator不同,ListIterator可以向前或向后遍历列表,并且可以在任意位置添加、修改或删除元素。

ListIterator有一些常用的方法如下:

  • hasNext():如果列表中还有元素可遍历,则返回true。
  • hasPrevious():如果列表中还有元素可逆向遍历,则返回true。
  • next():返回列表中的下一个元素,并将迭代器的位置向前移动。
  • previous():返回列表中的上一个元素,并将迭代器的位置向后移动。
  • add(E e):在列表中插入指定的元素。
  • set(E e):替换列表中迭代器最后一次返回的元素。
  • remove():从列表中删除迭代器最后一次返回的元素。

使用ListIterator遍历List时,必须首先通过list.listIterator()方法获取一个ListIterator对象,然后通过hasNext()和next()方法依次访问列表中的每个元素。如果需要反向遍历列表,则可以使用list.listIterator(list.size())方法获取一个初始位置在列表末尾的ListIterator对象,并使用hasPrevious()和previous()方法依次访问元素。

下面是一个使用ListIterator迭代列表并删除特定元素的示例代码:

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("A");
        list.add("B");
        list.add("C");
        list.add("D");
        list.add("E");

        ListIterator<String> it = list.listIterator();
        while (it.hasNext()) {
            String item = it.next();
            if (item.equals("C")) {
                it.remove(); // 删除特定元素
            }
        }

        System.out.println(list); // 输出修改后的列表
    }
}

这个示例中,我们创建了一个字符串类型的ArrayList对象,并添加了5个元素。然后通过list.listIterator()方法获取一个ListIterator对象,遍历列表并删除特定元素。最终输出列表内容。

三、Iterator 和 ListIterator 有什么区别

Iterator和ListIterator都是Java中迭代器的接口,用于遍历集合或列表中的元素。它们之间的主要区别如下:

  1. ListIterator可以向前/backward遍历列表并对列表进行修改,而Iterator只能向前遍历,并不能在遍历时修改集合。

  2. ListIterator有add()方法,可以在遍历时向列表中插入一个新元素;而Iterator没有该方法。

  3. ListIterator还有set()方法,可以修改当前遍历到的元素,而Iterator没有该方法。

因此,如果需要遍历列表并修改其中的元素,则应该使用ListIterator接口。如果只需要遍历集合或列表中的元素而不需要修改,则可以使用Iterator接口。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

胡晗靓

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

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

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

打赏作者

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

抵扣说明:

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

余额充值