Java进阶:【集合】认识集合了解简单语法 迭代器原理分析

Java中集合遍历Iterator迭代器执行原理 迭代器模式 foreach 增强for循环 文章目录1、Iterator迭代器2、开发中推荐使用方式3、错误使用方式4、Iterator迭代器中remove()方法5、利用迭代器实现的增强for循环遍历或者说foreach遍历 1、Iterator迭代器 用来遍历Colletioon接口实现的集合,返回Iterator接口的实例。 ①Iterator迭代器:专门用来遍历List、Set接口实现的集合,它不是一个容器,是Colletion接口中的一个遍历集合的方法,相当于火车上的乘务员的检票过程; ②迭代器模式:提供一种方法访问一个容器(contain 阅读详情

集合前言

数组,集合都是对多个数据进行存储操作,简称为容器

PS:这里的存储是内存层面的存储,而不是持久化存储

数组:只能存放同一种类型的数据

,长度无法更改,只能放同一种类型的数据

一旦指定了长度,那么长度就被确定,不可以更改,删除增加效率低,无法直接判断数组的实际元素的数量,需要我们自己去写,存储为有序,可重复。

如何解决数组的缺点?

用于解决数组缺点的新的存数的数据结构—>集合

什么是集合

我们有很多集合,为什么要学习这么多集合,应为不容的集合底层的数据机构不一样

将集合分为两种类型

存储方式:

一个一个数据的存储

一对一对数据的存数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DGwfrEo8-1637914672531)(javaSE.assets/image-20210702102548410.png)]

colletion接口

特点:不唯一,有序

  • 新增:add(E e)
  • 修改:
  • 删除:remove(Object o),clear()
  • 查看:iterator(),size()
  • 判断:contains(Object o),equals(Object o),isEmpty()
/*
* 新增:add(E e)
* 修改:
* 删除:remove(Object o),clear()
* 查看:iterator(),size()
* 判断:contains(Object o),equals(Object o),isEmpty()
* */


    public static void main(String[] args) {
        //接口不能创建对象:利用实现类创建
        Collection col = new ArrayList();
//        集合有一个特点,只能存放引用数据类型,不能是基本数据类型,
//        基本数据类型自动装箱,对应包装类
        col.add(18);
        col.add(12);
        col.add(15);
        System.out.println(col);
        List list = Arrays.asList(new Integer[]{2,1,3,4,5});
        col.addAll(list);
        System.out.println(col);
        col.clear();
        System.out.println(col);
        System.out.println("集合的数量:"+col.size());
        System.out.println("集合是否为空:"+col.isEmpty());
        boolean remove = col.remove(15);
        System.out.println(col);
        System.out.println("是否删除成功:"+remove);

        Collection col2 = new ArrayList();
//        集合有一个特点,只能存放引用数据类型,不能是基本数据类型,
//        基本数据类型自动装箱,对应包装类
        col2.add(18);
        col2.add(12);
        col2.add(15);

        Collection col3 = new ArrayList();
//        集合有一个特点,只能存放引用数据类型,不能是基本数据类型,
//        基本数据类型自动装箱,对应包装类
        col3.add(18);
        col3.add(12);
        col3.add(15);
        System.out.println(col2.equals(col3));

集合有一个特点,只能存放引用数据类型,不能是基本数据类型,那我们为什么加入基本类型没有报错?
解:基本数据类型自动装箱,对应包装类

遍历的两种方式

  1. ​ 增强for循环

            for (Object o : col) {
                System.out.println(o);
            }
    
  2. ​ 迭代器

            Iterator it = col.iterator();
            while (it.hasNext()){
                System.out.println(it.next());
            }
    

    迭代器简略原理:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ws5jDXJb-1637914672534)(javaSE.assets/image-20210702121849168.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7N7QOK8k-1637914672535)(javaSE.assets/image-20210702121819812.png)]

list接口

list接口常用方法:

list接口的常用方法

  • 增加:add(E e),
  • 删除:clear(),remove(int index), remove(Object o)
  • 修改:set(int index, E element)
  • 查看:get(int index),size()
  • 判断:
        List list = new ArrayList();
        list.add(12);
        list.add(5);
        list.add(-1);
        list.add(19);
        list.add(2);
        list.add("abc");
        System.out.println(list);
        list.add(3,14);
        System.out.println(list);
        list.set(3,77);
        System.out.println(list);
        list.remove(2); //调用这个方法参数为integer的时候,调用的是参数为index的remove方法,按照喜爱表删除
        System.out.println(list);
        list.remove("abc");
        System.out.println(list);

        Object o = list.get(0);
        System.out.println(o);
        System.out.println("-----------");
//        遍历list集合,普通for循环
        for (int i = 0; i <list.size(); i++) {
            System.out.print( list.get(i));
        }
        System.out.println("\n-----------");
        for (Object o1 : list) {
            System.out.print(o1);
        }
        System.out.println("\n-----------");
       Iterator it = list.iterator();
       while (it.hasNext()){
           System.out.print(it.next());
       }
    }

以上就是常用方法外加迭代的是那种遍历方式

vivo X200 Ultra前瞻系列(1):重塑影像旗舰标准 在色彩风格化、视频专业度上实现了安卓阵营的突破性进步。其2亿像素长焦、双LYT-818传感器及5轴防抖技术,对追求个性化创作的用户具有强吸引力。若真机表现能兑现硬件承诺,X200 Ultra有望重新定义手机影像的“专业”标准。然而,其厚重设计、价格门槛及生态适配问题,仍需市场检验。vivo X200 Ultra作为2025年上半年影像旗舰,以“全焦段夜视仪+电影级视频”为核心卖点,主打。,对标小米15 Ultra、OPPO Find X8 Ultra等竞品。,顶配版(24GB+2TB)逼近万元。 阅读详情

相关推荐

画个板子玩一玩STM32F030F4P6,也许是最便宜的32bit MCU

前言,什么是STM32F030F4P6 STM32目前最便宜的芯片之一应该就是这一块,STM32F030F4P6,这一个芯片没有USB,但是其他都有,引脚少,价格低廉,如果找不到原厂,可以买替代的国产芯片,性能也一样。 不管怎么样也是Cortex-M0,比8bit和16bit的性能都强,总的来说就是低价,引脚少,体积小的同时,还容易开发,有很多模拟输入可玩,还有SPI,硬件I2C等等 所以,这一款MCU真的是从理论来说又便宜又好用,非常适合把玩。 画个板,最小系统 STM32F030其..

arenascat的博客 2万+

Java集合迭代器的原理及使用介绍

原文地址: https://www.cnblogs.com/Jyh-c/p/14203142.html Java集合迭代器的原理及使用介绍 为什么要使用迭代器: 迭代器是对集合进行遍历,而每一个集合内部的存储结构都是不同的,所以每一个集合存和取都是不一样,那么就需要在每一个类中定义hasNext()和next()方法,这样做是可以的,但是会让整个集合体系过于臃肿,迭代器是将这样的方法向上抽取出接口,然后在每个类的内部,定义自己迭代方式,这样做的好处有:(1)规定了整个集合体系的遍历方式都是hasNext(

向上的"狼"的博客 667

Silvaco 学习笔记——物理模型:载流子产生复合模型

对载流子的复合机制进行总结

reactortiger的博客 1万+

迭代器Iterator 原理和实例详解(Java) - 集合

迭代器Iterator 原理和实例详解(Java) - 集合

Fzmeng1543的博客 1121

【数学基础】基于欧拉角表达的旋转顺序

欧拉角旋转顺序

FalschxMico 1384

Flink CDC 1.18.1 Oracle 数据同步到postgresql

8、修改Flink的配置文件,主要是各种服务的绑定地址,默认为localhost,统统改为0.0.0.0,如:rest.address: 0.0.0.0 #localhost。将flink-sql-connector-oracle-cdc-3.0.1.jar复制到flink-1.18.1/lib目录中。6、下载 flink-connector-jdbc-3.1.1-1.17.jar,postgresql-42.7.3.jar。7、安装postgresql就不说了,相信你已经有了数据库了。

ynzhangyao的专栏 1799

迭代器 Iterator的原理以及与ListIterator的区别

3.ListIterator实现了Iterator接口,并新增了其他功能,比如:add()方法向集合中增加元素,set()方法修改集合中的元素,previousIndex()方法获取前一个元素的索引,nextIndex()方法获取后一个元素的索引等。由于每一个容器都有取出或删除元素的功能,这些功能定义都一样,只不过实现的具体方式不同(因为每一个容器的数据结构不一样),所以,在java中对共性的功能进行抽取并封装在Iterator接口中,从而出现了迭代器。一个方法,用于获取迭代器。

cxbtdd的博客 754

在Keil下完成一个汇编程序的编写

在学习STM32的路上开始是学的C语言尚未进行对汇编进行学习,因此抽出时间来学习一下在keil下的汇编语言。

Liu-FE的博客 1万+

java中迭代器的原理,java迭代器实现原理

java迭代器实现原理迭代器就是把一个集合类(如:List,ArrayList)里面的东西一次全取出来,按照原来的顺序排成一个队(比如在医院),然后你对它说"下一个"(.next)的时候,队头那个家伙就出来了(返回一个对象),你就可以给它看病了,然后当没有人了的时候你再喊"下一个",护士小姐就会对你说没有人了(next返回false),你就可以下班了import java.util.ArrayLi...

weixin_35953155的博客 1899

项目实训(四)——SAM模型的学习与部署

这里的show_mask就是我们用mask的prompt进行分割,show_points就是我们用points进行分割,show_box就是通过box进行分割,这是SAM的三种prompt的方式。总的来说,Meta AI 的 Segment Anything 模型为我们提供了一种全新的物体识别和分割方式,其强大的泛化能力和广泛的应用前景将极大地推动计算机视觉领域的发展。这里有vit_h、vit_b、vit_l三种权重模型,这里可以根据自己的需要下载相应的权重模型。我们是下载的vit_h权重模型。

yyyyyyyx_的博客 1421

从0到1用OpenClaw打造酒店收益管理系统:数据整合→AI策略迭代全链路落地实战

本文基于三亚某连锁海景酒店真实项目落地经验编写,系统上线3个月,酒店平均入住率从62%提升至80%,RevPAR(平均可售房收入)提升26%,淡季空置率降低46%,完全覆盖中小酒店全场景收益管理需求。本文配套OpenClaw全量Skill代码、工作流配置文件,可直接复用落地。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 492

【java进阶】集合的三种遍历(迭代器、增强for、Lambda)

🔥那我们平常用for循环依赖下标遍历不行嘛,这就与集合的分类有关了。collection是单列集合的顶层接口单列集合分为list和set类list集合特点:有索引、可重复、添加的元素是有序的set集合特点:无索引、不可重复、添加的元素是无序的list集合可以通过下标循环遍历,set集合就不行啦。

Panci_的博客 2314

025、空间降噪与时域降噪:噪声抑制与细节保留的平衡艺术

《降噪技术的平衡艺术:空间与时域降噪的协同优化》 本文深入探讨了图像处理中空间降噪与时域降噪的技术原理与工程实践。空间降噪通过像素级处理提升单帧质量,而时域降噪则利用帧间信息增强稳定性。文章揭示了两种方法在实际应用中的矛盾点:过度降噪会导致细节损失,影响后续算法性能。作者结合车载环视系统等实战案例,详细分享了参数调优经验,包括运动自适应策略、边缘保持技巧和嵌入式平台优化方案。特别强调降噪的最终目标应服务于下游算法需求,而非单纯追求图像美观。文章为工程人员提供了从理论到实践的完整指导,展现了降噪技术在效果与性

sundong_81的博客 186

【JAVA】深入理解Java迭代器:迭代器的底层原理及使用场景

Java迭代器是用于遍历容器元素的工具,通过Iterator接口提供hasNext()、next()和remove()方法实现顺序访问。迭代器内部通过指针移动实现遍历,而增强for循环是其语法糖,底层自动转换为迭代器操作。主要使用场景包括集合遍历、安全删除元素、自定义集合遍历等。迭代器模式解耦了遍历逻辑与集合实现,提供统一访问方式。remove()方法可安全删除当前元素,避免并发修改异常。增强for循环简化了迭代器使用,编译后仍基于迭代器实现。

2302_79323248的博客 2456

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Java迭代器:集合遍历的“时光机“

迭代器是Java集合框架中用于遍历集合元素的接口,它提供了统一的元素访问方式,无需关心集合的具体实现。🔑迭代器使用口诀集合遍历不用愁,迭代器来帮你游;hasNext探路走,next取值不用求;删除元素最安全,并发修改异常丢;增强for是语法糖,底层还是老朋友!迭代器是集合遍历的标准方式,理解它就能玩转所有Java集合!

全栈开发工程师 1024

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Java进阶之“集合、泛型、迭代器”

集合相关应用API详细说明举例,泛型,迭代器原理说明

qq_64776114的博客 968

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

《Java 集合迭代器深度解析:统一遍历背后的原理与设计思想》

Java迭代器通过统一接口实现不同集合结构的遍历。迭代器模式使得ArrayList、LinkedList等集合类只需要实现Iterator接口中的hasNext()、next()等方法,就能以相同方式访问各自的数据结构。Iterable接口要求所有集合提供iterator()方法,返回定制化的迭代器对象,封装了特定集合的遍历逻辑。这种设计利用多态性,让用户无需关心底层实现(数组、链表、哈希表等),只需通过统一的Iterator接口操作集合元素,实现了遍历行为的标准化与解耦,体现了面向对象编程的抽象优势。

m0_74182461的博客 1352

Java:集合以及集合进阶 --黑马笔记

除了ArrayList集合,Java还提供了很多种其他的集合,如下图所示:我想你的第一感觉是这些集合好多呀!但是,我们学习时会对这些集合进行分类学习,如下图所示:一类是单列集合元素是一个一个的,另一类是双列集合元素是一对一对的。Collection是单列集合的根接口,Collection接口下面又有两个子接口List接口、Set接口,List和Set下面分别有不同的实现类,如下图所示:上图中各种集合的特点如下图所示://简单确认一下Collection集合的特点//存取顺序一致,可以重复,有索引。

m0_74098386的博客 1881

[Java进阶] 迭代器Iterator原理

[Java进阶] 迭代器Iterator原理

花与树 886

java集合的迭代器与遍历

一些集合类提供了内容遍历的功能,通过java.util.Iterator接口。这些接口允许遍历对象的集合。依次操作每个元素对象。当使用 Iterators时,在获得Iterator的时候包含一个集合快照。通常在遍历一个Iterator的时候不建议修改集合本省。Iterator:只能正向遍历集合,适用于获取移除元素。ListIerator:继承Iterator,可以双向列表的遍历,同样支持元素的修改。2、Iterator与ListIterator有什么区别?1、什么是Iterator。

扬帆天涯 2652

JavaSE进阶06:Collection集合、迭代器、List、ArrayList、LinkedList

1.时间日期类 1.1 Date类(应用) 计算机中时间原点 1970年1月1日 00:00:00 时间换算单位 1秒 = 1000毫秒 Date类概述 Date 代表了一个特定的时间,精确到毫秒 Date类构造方法 方法名 说明 public Date() 分配一个 Date对象,并初始化,以便它代表它被分配的时间,精确到毫秒 public Date(long date) 分配一个 Date对象,并将其初始化为表示从标准基准时间起指定的毫秒数 示例代码 publ

XXXZhy丶Blog 1411

深入剖析Java迭代器:原理、应用与性能优化全攻略

本文深入探讨Java集合框架中的迭代器(Iterator),从基础原理到高级应用全面解析。内容包括迭代器设计模式、ListIterator双向遍历和Spliterator并行处理等核心概念,通过代码示例和性能对比展示不同迭代方式的差异。特别针对开发中常见的ConcurrentModificationException异常,详细分析其产生机制并提供解决方案。文章还分享了预分配容量、批量操作和并行流等优化技巧,并演示如何实现自定义树结构迭代器。最后强调在实际开发中应根据不同集合类型选择最优遍历方式,平衡代码简洁

言不信者行不果,行不敏者言多滞. 1520

11-java集合与迭代器

现实生活中,我们常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一一对应的关系,就叫做映射。Java提供了专门的集合类用来存放这种对象关系的对象,即接口。我们通过查看Map接口描述,发现Map接口下的集合与接口下的集合,它们存储数据的形式不同。Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储。Map中的集合,元素是成对存在的(理解为夫妻)。每个元素由键与值两部分组成,通过键可以找对所对应的值。

weixin_55702682的博客 1219

【 java 集合】使用迭代器 Iterator 遍历集合

上两篇文章总结了集合体系以及Collection常用方法,本节我们来学习使用迭代器 Iterator 遍历集合!

阿牛的博客 6798

深入学习集合迭代器

集合作为Java基础内容中的重点内容,在我们的日常开发中不可避免的使用,因而最近研究一下Java集合的源码,在此分享给大家。

2301_82191151的博客 735

Java-进阶二-单列集合双列集合的底层原理

ArrayList的源代码分析(扩容原理)

小安同学的博客 859
上一篇: Java进阶:循环进阶经典练习题
下一篇: Java进阶:【集合】认识集合相关的数据结构
冷环渊
博客等级 码龄7年 1130粉丝 176原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

冷环渊

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

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

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

打赏作者

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

抵扣说明:

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

余额充值