【Java杂谈】Iterator(迭代器)的使用

这篇具有很好参考价值的文章主要介绍了【Java杂谈】Iterator(迭代器)的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🎸Iterator是什么?

  • 迭代器是Java提供的一种访问集合的方法,Iterator 是 Java 迭代器最简单的实现,常用来访问ArrayList、HashMap等类的对象。

  • Iterator是一个接口,ListIterator是Collection API中的接口,它扩展了Iterator接口:

package java.util;

public interface ListIterator<E> extends Iterator<E> {
 
    boolean hasNext();

    E next();

    boolean hasPrevious();

    E previous();

    int nextIndex();

    int previousIndex();

    // Modification Operations

    void remove();

    void set(E e);

    void add(E e);
}

🎹Iterator的基本操作

🚀获取迭代器

可以使用iterator() 方法:

List<Integer> list  = new ArrayList<>();
//获取list的iterator
Iterator<Integer> listIterator = list.iterator();

🚀iterator遍历集合

while(listIterator.hasNext()){
    System.out.println(listIterator.next());
}

hasNext()方法的作用是没有遍历完成

next()方法有两个作用:1.返回迭代器当前位置结果2.返回结果后让迭代器继续遍历下一位置元素

🚀使用iterator删除元素

示例:

List<Integer> list  = new ArrayList<>();

        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);

        //获取list的iterator
        Iterator<Integer> listIterator = list.iterator();

        while(listIterator.hasNext()){
            if(listIterator.next()<3) {
                listIterator.remove();
            }
        }
        System.out.println(list);

🎺 增强for循环

在java中常常见到这样一种循环:

List<Integer> list  = new ArrayList<>();
for (Integer i : list) {
    // 相应操作
}

称其为增强for循环,反编译class文件结果如下:

List<Integer> list = new ArrayList();
Integer var3;
for(Iterator var2 = list.iterator(); var2.hasNext(); var3 = (Integer)var2.next()) {
}

可见增强for循环实际上也是使用iterator实现的

🎻注意事项

在使用iterator遍历集合,若对集合内元素进项删除操作,需要注意这样一个问题:

List<Integer> list  = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
list.add(6);

Iterator<Integer> it = list.iterator();
    while (it.hasNext()) {
    int i = it.next();
    if(i%2 ==0){
        list.remove(i);
    }
}
System.out.println(list);

当运行上述代码时,会出现异常:

【Java杂谈】Iterator(迭代器)的使用

这是因为当边使用迭代器对list进行遍历,边使用remove()删除,导致当使用remove()删除时,迭代器指向元素发生变化,造成“对象的并发修改”的问题,解决这一问题,可以使用iterator接口提供的iterator.remove()删除对象。文章来源地址https://www.toymoban.com/news/detail-498324.html

到了这里,关于【Java杂谈】Iterator(迭代器)的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java常见面试题:什么是迭代器模式(Iterator Pattern)?如何实现迭代器模式?

    迭代器模式(Iterator Pattern)是设计模式中的一种,它提供了一种顺序访问一个聚合对象(如列表、集合等)中各个元素的方法,而又不需要暴露该对象的内部表示。使用迭代器模式,可以方便地遍历一个聚合对象的所有元素,而不需要了解该对象的底层结构。 迭代器模式主

    2024年01月18日
    浏览(54)
  • 什么是迭代器(Iterator)?如何使用它遍历集合?

    迭代器(Iterator)是一种设计模式,它提供了一种遍历集合(如列表、数组、映射等)中元素的方法,而无需暴露集合内部的表示细节。它将遍历和集合分离,使得可以独立地操作和遍历集合。 在许多编程语言中,迭代器是一个对象,它包含了可以遍历集合的方法。常见的迭

    2024年02月15日
    浏览(43)
  • 🔥🔥Java开发者的Python快速进修指南:迭代器(Iterator)与生成器

    这一篇内容可能相对较少,但是迭代器在Java中是有用处的。因此,我想介绍一下Python中迭代器的使用方法。除了写法简单之外,Python的迭代器还有一个最大的不同之处,就是无法直接判断是否还有下一个元素。我们只能通过捕获异常或使用for循环来退出迭代,这点让我感到十

    2024年02月05日
    浏览(51)
  • 【设计模式——学习笔记】23种设计模式——迭代器模式Iterator(原理讲解+应用场景介绍+案例介绍+Java代码实现)

    编写程序展示一个学校院系结构: 需求是这样,要在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系 【传统方式】 将学院看做是学校的子类,系是学院的子类,小的组织继承大的组织 分析: 在一个页面中展示出学校的院系组成,一个学校有多个

    2024年02月14日
    浏览(39)
  • C++设计模式_21_Iterator 迭代器(理解;面向对象的迭代器已过时;C++中使用泛型编程的方式实现)

    Iterator 迭代器也是属于“数据结构”模式。 GoF中面向对象的迭代器已经过时,C++中目前使用泛型编程的方式实现,其他语言还在使用面向对象的迭代器。 在软件构建过程中,集合对象内部结构常常变化各异。但对于这些集合对象,我们希望在不暴露其内部结构的同时,可以

    2024年02月07日
    浏览(55)
  • C++迭代器(STL迭代器)iterator详解

    要访问顺序容器和关联容器中的元素,需要通过“迭代器(iterator)”进行。迭代器是一个变量,相当于容器和操纵容器的算法之间的中介。迭代器可以指向容器中的某个元素,通过迭代器就可以读写它指向的元素。从这一点上看,迭代器和指针类似。 迭代器按照定义方式分

    2024年02月03日
    浏览(45)
  • JS - iterator(迭代器)

    一、 概念        JavaScript原有表示“集合”的数据结构,主要是数组(\\\' Array \\\')和对象(\\\' Object \\\' ),ES6又添加了Map和Set。这样就有了四种数据集合,用户还可以组合使用它们,定义自己的数据结构,比如数组的成员是Map,Map的成员是对象。这样就需要一种统一的接口机制,

    2024年02月07日
    浏览(46)
  • Python迭代器(Iterator)

    迭代是访问集合元素的一种方式 迭代器是一个可以记住遍历位置的对象。迭代器对象从第一个元素开始访问,直到所有的元素被访问结束。迭代器只能往前不会后退。 能用for循环遍历的对象 for循环的过程可以通过上面的iter()和next()函数来实现,即: 1、先调用iter(),将nums当

    2024年02月15日
    浏览(37)
  • 迭代器 Iterator

    迭代器是一种设计模式,它用于遍历集合或容器中的元素,能够访问集合的元素而无需关心集合的内部结构: 特点: 封装集合访问 :迭代器封装了对集合元素的访问,通过迭代器访问集合中的元素,而无需了解集合的内部结构或实现方式。 统一接口 :迭代器提供了一致的

    2024年02月08日
    浏览(46)
  • 迭代器模式(Iterator Pattern)

    一、定义 提供一种方法顺序访问一个聚合对象中各个元素,而又不需要暴露该对象的内部表示。 二、优缺点 优点:  1、它支持以不同的方式遍历一个聚合对象。 2、迭代器简化了聚合类。 3、在同一个聚合上可以有多个遍历。 4、在迭代器模式中,增加新的聚合类和迭代器类

    2024年02月09日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包