Iterator集合底层原理

这篇具有很好参考价值的文章主要介绍了Iterator集合底层原理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

//Itr是 ArrayList中的一个内部类
private class Itr implements Iterator<E> {
    int cursor;       // index of next element to return 光标,表示是迭代器里面的那个指针,默认指向0索引的位置
    int lastRet = -1; // index of last element returned; -1 if no such 表示上一次操作的索引
    int expectedModCount = modCount;

    Itr() {}

    public boolean hasNext() {
        return cursor != size; 
    }

    @SuppressWarnings("unchecked")
    public E next() {
        checkForComodification();
        int i = cursor;
        if (i >= size)
            throw new NoSuchElementException();
        Object[] elementData = ArrayList.this.elementData;
        if (i >= elementData.length)
            throw new ConcurrentModificationException();
        cursor = i + 1;
        return (E) elementData[lastRet = i];
    }

    public void remove() {
        if (lastRet < 0)
            throw new IllegalStateException();
        checkForComodification();

        try {
            ArrayList.this.remove(lastRet);
            cursor = lastRet;
            lastRet = -1;
            expectedModCount = modCount;
        } catch (IndexOutOfBoundsException ex) {
            throw new ConcurrentModificationException();
        }
    }

iterator的四个细节

  1. NoSuchElementException异常

    当上面循环结束之后,迭代器的指针已经指向了最后没有元素的位置

  2. 迭代器遍历完成,指针不会复位

    如果我们要继续第二次遍历集合,只能再次获取一个新的迭代器对象

  3. 循环中只能用一次next方法

    next方法的两件事情:获取元素,并移动指针

  4. 迭代器遍历时,不能用集合的方法进行增加或者删除文章来源地址https://www.toymoban.com/news/detail-776340.html

到了这里,关于Iterator集合底层原理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Java 集合中 ArrayList 的扩容机制原理(面试+读源码)

               在 Java 中,ArrayList 内部是通过一个数组来存储元素的,是一个数组结构的存储容器。当向一个 ArrayList 中添加元素时,如果当前数组已经满了,就需要扩容。          集合的继承关系图  ( ArrayList 的扩容机制原理 )          面试官好,ArrayList 是一个数

    2024年02月07日
    浏览(48)
  • 获取ArrayList集合中的元素的三种方法

    背景:创建数组List

    2024年02月10日
    浏览(39)
  • 详细解读Java中Map集合的底层原理(干货+源码解读)

    本文将为大家详细讲解Java中的Map集合,这是我们进行开发时经常用到的知识点,也是大家在学习Java中很重要的一个知识点,更是我们在面试时有可能会问到的问题。 文章较长,干货满满,建议大家收藏慢慢学习。文末有本文重点总结,主页有全系列文章分享。技术类问题,

    2024年02月06日
    浏览(77)
  • 【 java 集合】使用迭代器 Iterator 遍历集合

    💖 作者简介:大家好,我是阿牛,全栈领域优质创作者。😜 📝 个人主页:馆主阿牛🔥 🎉 支持我:点赞👍+收藏⭐️+留言📝 📣 系列专栏:java 小白到高手的蜕变🍁 💬格言:要成为光,因为有怕黑的人!🔥 上两篇文章总结了集合体系以及Collection常用方法,本节我们来

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

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

    2024年02月15日
    浏览(43)
  • spring中的事务及底层原理

    在Spring框架中,事务管理是一个关键的特性,它允许开发者在应用程序中声明性地管理事务。Spring事务管理的核心是基于AOP(面向切面编程)和IOC(控制反转)的思想。以下是Spring中事务管理的一些重要概念和底层原理: 事务管理器(Transaction Manager): Spring事务管理的底层

    2024年01月19日
    浏览(38)
  • java 数据结构 ArrayList源码底层 LinkedList 底层源码 迭代器底层

    对于数据结构我这边只告诉你右边框框里的 栈的特点:后进先出,先进后出,入栈也成为压栈,出栈也成为弹栈 栈就像一个弹夹 队列先进先出后进后出 队列像排队 链表查询满 但是增删快(相对于数组而言) 拓展:还有一个双向链表 他在查询元素的时候更快些,因为他在拿到一个元素

    2024年02月05日
    浏览(46)
  • ArrayList底层结构和源码分析

    1.permits all elements, including null,ArrayList 可以加入null,并且多个 2.ArrayList是由数组来实现数据存储的 3.ArrayList 基本等同于Vector,除了ArrayList是线程不安全(执行效率高)看源码.在多线程情况下,不建议使用ArrayList 代码演示: ArrayList的底层操作机制源码分析 (重点,难点.) 1.Arra

    2023年04月24日
    浏览(55)
  • ArrayList 底层结构及源码分析

    ArrayList 实现了 List 接口。它可以存储包括 null 的任何类型的对象,允许重复元素。 ArrayList 在内部使用一个数组来存储元素,当元素数量超过数组容量时, ArrayList 会自动重新分配更大的内部数组,并且将现有元素复制到新数组中。 ArrayList 基本等同于 Vector ,但是 ArrayList 是

    2024年02月08日
    浏览(38)
  • ArrayList 底层结构和源码分析

    ArrayList 实现了 List 接口。它可以存储包括 null 的任何类型的对象,允许重复元素。 ArrayList 在内部使用一个数组来存储元素,当元素数量超过数组容量时, ArrayList 会自动重新分配更大的内部数组,并且将现有元素复制到新数组中。 ArrayList 基本等同于 Vector ,但是 ArrayList 是

    2024年02月08日
    浏览(39)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包