Iterator(迭代器) 和 list

Iterator(迭代器) 和 list

文章目录

  • 一、Iterator(迭代器)
  • 二、list


提示:以下是本篇文章正文内容,下面案例可供参考

一、Iterator(迭代器)

对 collection 进行迭代的迭代器。迭代器取代了 Java Collections Framework 中的 Enumeration。
在这里插入图片描述
其中Iterator中有三个方法,分别为:

  • hasNext() : 如果仍有元素可以迭代,则返回 true
  • next() : 返回迭代 的下一个元素。
  • remove() :从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。
        Collection<Integer> ct = new ArrayList<>();ct.add(12);ct.add(16);ct.add(56);ct.add(63);ct.add(96);ct.add(33);ct.add(69);Iterator<Integer> iter = ct.iterator();while (iter.hasNext()){int e = iter.next();System.out.println(e);}System.out.println(iter.hasNext());iter.remove();System.out.println(ct);

输出信息:

D:\kaifamiao\environments\OpenJDK-17.0.2\bin\java.exe -javaagent:D:\kaifamiao\applications\ideaIU-2021.2.2\ideaIU-2021.2.2\lib\idea_rt.jar=55736:D:\kaifamiao\applications\ideaIU-2021.2.2\ideaIU-2021.2.2\bin -Dfile.encoding=UTF-8 -classpath D:\kaifamiao\mycodes\java-base\out\production\iterator IteratorTest
12
16
56
63
96
33
69
false
[12, 16, 56, 63, 96, 33]

Process finished with exit code 0

而每一个迭代器只能从头到尾迭代一次,不然会报:

在这里插入图片描述

二、list

可以人为的指定顺序(定义顺序),可以重复(可以排序)(即有索引)。
在这里插入图片描述
其中一个实现此接口的类是 ArrayList<E>
在这里插入图片描述
包含两种增加方式:

  • ​ add(E e) :将指定的元素添加到此列表的尾部。
  • ​ add(int index, E element) :将指定的元素插入此列表中的指定位置。
        List<Integer> list = new ArrayList<>();list.add(16);list.add(15);list.add(35);list.add(52);list.add(32);System.out.println(list);list.add( 1 , 56);System.out.println(list);

[16, 15, 35, 52, 32]
[16, 56, 15, 35, 52, 32]

Process finished with exit code 0

可以将属猪转化为 list集合 ,但对转化过来的 list集合 不能进行添加和删除元素 ,但可以对其进行 排序 和 替换。

        Integer[] array = { 9, 10, 2, 6, 7, 3, 4 };List<Integer> list = Arrays.asList( array );System.out.println( list );List<Integer> numbers = new ArrayList<>();numbers.addAll( list );numbers.add( 1 );numbers.add( 0 , 5 );System.out.println( numbers );

而排序有两种方式,自然排序 和 比较器排序。其中 sort( null )是指没有在里面传任何比较器,所以为自然排序。

        Comparator<Integer> comparator = new Comparator<Integer>() {@Overridepublic int compare(Integer a, Integer b) {if( a != null && b != null ) {return -( a - b );}return 0;}};

Java 8 之前,可以通过 Arrays.asList() 将数组 “转化”(造) 为 list 集合,但这个 list集合 不能添加,删除,但可以替换和排序。因为该类是 Arrays 中的内部类,所有外界不可对此进行添加删除。

而在 Java 8 之后,利用 list.of() 得到一个元素不能为 null(主要取决于实现类)且不可变的(即 添加删除排列,查找都不能)的 list 集合,并且 括号中第一个参数确定了之后参数的类型 (如果你参数列表中有多种类型,则会自动认定为 Object 类)。

copyOf() 复制过去的另一个集合也是不能进行修改的,他们的都是其内部类方法实现的。

其中 listIterator 是可以通过方法从第一个元素开始迭代,还是从索引 -1 的位置就开始迭代。
在这里插入图片描述
由此可以实现多次迭代。

ArrayList不是 线程安全 的。
在这里插入图片描述
快速失败 是指:

当检测出有迭代器时,应该使用迭代器所提供的方法,当发现使用(迭代器之外的)集合中的方法时,会尽可能的抛出异常。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/314331.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Unity入门】UGUI之Slider(滑动条)

目录 一、什么是Slider&#xff1f;二、Slider属性与功能 一、什么是Slider&#xff1f; Slider控件允许用户可以通过鼠标来在预先确定的范围调节数值 我们可以在Hierarchy视图右键 -> UI ->Slider来创建滑动条 通过上图可以发现Unity内置的Slider主要有3部分&#x…

互斥锁-第二十七天

互斥锁 定义&#xff1a;解决临界区最简单的工具&#xff08;一个进程在进入临界区时应获得锁&#xff1b;在退出临界区时释放锁。函数acquire()获得锁&#xff0c;release()释放锁&#xff09; 注意事项&#xff1a;acquire()或release()的执行必须是原子操作&#xff0c;因…

createElement, parentNode, removeChild, appendChild

1获取父节点 var childNode document.getElementById("child"); var parentNode childNode.parentNode; // 获取父节点利用dom获取元素要嵌套 引出&#xff1a;利用父子兄节点关系获取元素 标签&#xff0c;元素&#xff0c;元素节点空格&#xff0c;文本节点属性…

buildadmin实现多级关联下拉效果

文章目录 最终效果开始重新渲染组件编辑渲染完结 最终效果 开始 popupForm.vue代码 <FormItem :label"t(interior.interiorApply.interior_index_id)" type"remoteSelect"v-model"baTable.form.items!.interior_index_id" prop"interi…

Vue:使用IDEA开发Vue的相关配置

一、IDEA无法识别.vue文件 1、IDEA 添加Vue插件 2、添加Vue配置 File | Settings | Editor | File Types 找到 HTML 文件 在下面点号 输入*.vue 二、IDEA无法创建.vue文件 1、问题 在开发过程中&#xff0c;发现创建文件的界面&#xff0c;没有vue模板 2、相关配置 Fi…

MySql——1146 - Table‘mysql.proc‘doesn‘t exit是这个

项目场景&#xff1a; 做自己的小项目需要连接mysql数据库 问题描述 点击数据库时报错 1146 - Table’mysql.proc’doesn’t exit 原因分析&#xff1a; 误删原生的mysql数据库 解决方案&#xff1a; 重新安装装部署mysql就好了 注意不要轻易删除原生的东西

57.网游逆向分析与插件开发-游戏增加自动化助手接口-接管游戏的自动药水设定功能

内容来源于&#xff1a;易道云信息技术研究院VIP课 码云地址&#xff08;master分支&#xff09;&#xff1a;https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号&#xff1a;51307d6bf69f2f3c645c70d09f841f5e32da79b9 代码下载地址&#xff0c;在 SRO_EX 目录下&…

PiflowX组件-ReadFromUpsertKafka

ReadFromUpsertKafka组件 组件说明 upsert方式从Kafka topic中读取数据。 计算引擎 flink 有界性 Unbounded 组件分组 kafka 端口 Inport&#xff1a;默认端口 outport&#xff1a;默认端口 组件属性 名称展示名称默认值允许值是否必填描述例子kafka_hostKAFKA_HO…

2023-12-11 LeetCode每日一题(最小体力消耗路径)

2023-12-11每日一题 一、题目编号 1631. 最小体力消耗路径二、题目链接 点击跳转到题目位置 三、题目描述 你准备参加一场远足活动。给你一个二维 rows x columns 的地图 heights &#xff0c;其中 heights[row][col] 表示格子 (row, col) 的高度。一开始你在最左上角的格…

【电商项目实战】商品详情显示与Redis存储购物车信息

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《电商项目实战》。&#x1f3af;&#x1f3af; &am…

JAR文件如何在没有安装JDK的电脑上运行(指定运行环境)

一、JAR包是什么&#xff1f; 首先&#xff0c;我们来了解一下JAR&#xff08;Java Archive&#xff09;包。JAR包是一种文件格式&#xff0c;用于将Java类、资源和元数据打包到一个文件中。它通常用于将Java库、应用程序或模块分发给其他开发人员或部署到不同的环境中。JAR包可…

使用flutter开发一个简单的轮播图带指示器的组件

使用PageView开发一个带指示器的轮播图组件&#xff0c;当轮播图切换的时候&#xff0c;指示器也会跟着切换&#xff0c;切换到当前轮播图所在的索引时&#xff0c;指示器的背景色会变成蓝色&#xff0c;否则是灰色。使用了一个curIndex变量来记录当前激活的轮播图索引。并使用…