java开发——Iterator迭代器用来干什么的?和普通for、增强for有什么区别吗?

本文介绍了在Java中使用迭代器(Iterator)、增强for循环及普通for循环遍历和修改List集合的方法,并对比了它们的特点和适用场景。对于仅需遍历的情况推荐使用增强for循环;若需删除元素则推荐使用迭代器;若同时需要删除和修改,则应采用普通for循环。此外,还介绍了List特有的迭代器ListIterator及其额外功能。

结论

迭代器:遍历方便,删除方便;(Iterator只有3个方法:hasNext()、next()、remove())

普通for:遍历时可删除,可修改;

增强for:遍历最方便,不可编辑。(实际上调用的还是迭代器)

所以,迭代器实际上是给增强for使用的!!当然,我们也可以直接使用迭代器,这个效率比普通for要高!

public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        list.add("ddd");
        list.add("eee");
        list.add("fff");
        Iterator<String> iterator = list.iterator();
        //遍历方便,删除方便
        while (iterator.hasNext()) {
            String name = iterator.next();
            if (name.equals("ddd")) {
                iterator.remove();
            }
        }
        System.out.println(list.size());
        //普通for:遍历时可删除,可修改
        for (int i = 0; i < list.size(); i++) {
            String name = list.get(i);
            if ("bbb".equals(name)) {
                list.remove(list.get(i));
            }
            if("fff".equals(name)){
                list.set(i, "zzz");
            }
        }
        System.out.println(list.size());
        //增强for:遍历方便
        for (String name : list) {
//            if ("ccc".equals(name)) {
//                list.remove(name);//抛异常ConcurrentModificationException
//            }
            System.out.println(name);
        }
    }

 打印:

5
4
aaa
ccc
eee
zzz
 

补充:

1、如果只需要遍历,不需要删改,强烈建议使用增强for。

2、如果需要删除集合中某个元素,则可以使用迭代器。

3、需要删除和修改的话,只能用普通for了。

4、List集合比较特殊,有特殊的迭代器:ListIterator,下面简单介绍一下ListItorator

ListItorator除了有常规的Iterator的3个方法(hasNext()、next()、remove()),还有另外6个方法(add()、set()、previous()、hasPrevious()、nextIndex()和previousIndex())。所以,对list集合的遍历有着删改以及其他需求的,可以使用这个list专有的迭代器——ListItorator

觉得有用的老铁给我博客赞一下呗! 

迭代器Iterator)是一种设计模式,它提供了一种方法来访问一个容器(如数组、链表、树等)中的各个元素,而不用暴露该容器的内部实现。迭代器模式在许多编程语言中都有广泛应用,例如 Java、C++、Python 等。 在 Python 中,迭代器是一个对象,它能够实现迭代协议,即支持 `__iter__()` `__next__()` 两个方法。其中,`__iter__()` 方法返回迭代器对象本身,而 `__next__()` 方法返回容器中的下一个元素。当容器中没有元素时,`__next__()` 方法会抛出 StopIteration 异常。 以下是一个使用迭代器遍历列表的示例代码: ```python my_list = [1, 2, 3, 4, 5] my_iter = iter(my_list) while True: try: item = next(my_iter) print(item) except StopIteration: break ``` 在上述代码中,我们首先创建了一个列表 `my_list`,然后使用 `iter()` 函数创建了一个迭代器 `my_iter`。接着,我们进入一个无限循环,每次尝试从迭代器中获取下一个元素。如果获取成功,就打印该元素;如果获取失败,即迭代器已经遍历完了列表,就跳出循环。 除了上述方式,Python 还提供了更为简洁的迭代器使用方式,即使用 `for` 循环。例如,上述代码可以简化为以下形式: ```python my_list = [1, 2, 3, 4, 5] for item in my_list: print(item) ``` 在上述代码中,我们使用 `for` 循环遍历了列表 `my_list` 中的所有元素,不需要显式地创建迭代器或处理 StopIteration 异常。这是因为 Python 在背后自动创建了一个迭代器对象,并且在迭代完所有元素后自动捕获了 StopIteration 异常。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值