Java集合实例

一、什么是Java集合实例:

     指的是在 Java 程序中创建和使用的集合对象,这些对象用于存储和操作数据。Java 集合框架提供了一系列的接口和实现类,用于管理不同类型的数据集合。

二、Java集合的主要实例类型:

1. List(列表): 


  1)`ArrayList`:基于动态数组的实现,提供随机访问元素的高效性能。

   2)`LinkedList`:基于双向链表的实现,适合频繁插入和删除元素的场景。

输出结果:

修改LinkedList元素的位置:

输出结果:

 

 `LinkedList` 操作序列如下:

1. `list.add("一");` —— 将 "一" 添加到列表末尾。
2. `list.addFirst("二");` —— 将 "二" 添加到列表开头。
3. `list.addLast("三");` —— 将 "三" 添加到列表末尾。
4. `list.add(0, "四");` —— 在索引 0 处插入 "四",这会将之前位于位置 0 的元素向后移动一位。
5. `list.add("五");` —— 将 "五" 添加到列表末尾。
6. `list.add(5, "六");` —— 在索引 5 处插入 "六",这会将之后的所有元素向后移动一位。

在这些操作之后,`LinkedList` 的内容如下:

- 初始时,`list` 为空。
- 第一步,`list` 内容为 ["一"]。
- 第二步,`list` 内容变为 ["二", "一"],因为 `addFirst` 方法将元素添加到列表的开头。
- 第三步,`list` 内容变为 ["二", "一", "三"],`addLast` 方法将 "三" 添加到了列表的末尾。
- 第四步,`list` 内容变为 ["四", "二", "一", "三"],`add(0, "四")` 方法在索引 0 处插入了 "四",并将之前的元素向后移动。
- 第五步,`list` 内容变为 ["四", "二", "一", "三", "五"],`add("五")` 方法将 "五" 添加到了列表的末尾。
- 最后一步,`list` 内容变为 ["四", "二", "一", "三", "五", "六"],`add(5, "六")` 方法在索引 5 处插入了 "六",此时 "五" 已经在索引 4 的位置,因此 "六" 被正确地插入到了 "五" 的后面。

因此,最终输出的 `LinkedList` 内容应为:

输出结果:
["四", "二", "一", "三", "五", "六"]

 

在这个列表中,“三”确实出现在“五”的前面,这是因为“三”是在“五”添加之前就已经添加到了列表的末尾(步骤 3),然后在后续的操作中,没有进一步的修改影响到“三”的位置,直到“五”和“六”被添加到了列表的末尾(步骤 5 和 6)。所以,“三”自然位于“五”的前面。

数据的删除:

结果输出: 

删除元素:
   - `list.removeFirst();` —— 移除 "四",列表变为:`["二", "一", "三", "五", "六", "三", "三"]`
   - `list.removeLast();` —— 移除最后一个 "三",列表变为:`["二", "一", "三", "五", "六", "三"]`
   - `list.remove("三");` —— 移除列表中第一次出现的 "三",列表变为:`["二", "一", "五", "六", "三"]`
   - `list.remove(2);` —— 移除索引 2 的元素 "五",列表变为:`["二", "一", "六", "三"]`

总结一下,`removeFirst()` 移除了列表的第一个元素,`removeLast()` 移除了列表的最后一个元素,`remove("三")` 移除了列表中第一次出现的 "三",而 `remove(2);` 移除了索引 2 的元素,此时 "五" 已经不在索引 2 的位置,因此实际上移除的是 "五" 被删除后索引 2 处的元素,即 "六" 前面的 "一"。但根据描述,`remove(2);` 实际上移除的是列表中修改后索引 2 处的元素,即原本的 "五" 被删除后的 "六",这导致最终列表为 `["二", "一", "六", "三"]`。


   3)`Vector`:类似于 `ArrayList`,但线程安全。

2. Set(集合):


   1) `HashSet`:基于哈希表的实现,不允许重复元素,元素无序。

1)调用名为Set的接口,将值由该接口储存起来

2)是定义的接口只接收String类型数据

3)实例化HashSet对象,该对象是Set接口的其中一个类

 

 

 


   2) `TreeSet`:基于红黑树的实现,不允许重复元素,元素按照自然顺序或自定义比较器排序。

排序:

默认是升序排序: 

重写排序方法使排序方法为降序排序:

 查找和删除元素:

子集和迭代器:

 


   3)`LinkedHashSet`:结合了 `HashSet` 的高速特性和 `LinkedHashMap` 的迭代顺序,元素按插入顺序排列。

 

3. Map(映射):

   1) `HashMap`:基于哈希表的实现,存储键值对,键不能重复,不保证映射的顺序。

 

输出结果:


   2)`TreeMap`:基于红黑树的实现,存储键值对,键不能重复,键值对按照键的自然顺序或自定义比较器排序。

 

 

 

 


   3)`LinkedHashMap`:结合了 `HashMap` 的高速特性和 `LinkedHashMap` 的迭代顺序,映射按照插入顺序排列。

添加和打印:

 

 访问顺序:

 

 

 

 移除最旧的条目:

覆盖重写 removeEldestEntry方法

 

4. Queue(队列):


   1)`ArrayDeque`:基于数组的双端队列实现,可以高效地从两端添加和移除元素。

   2)`LinkedList`:由于其双向链表的性质,也常被用作队列。

 

 

 

 

 

 

5. Stack(栈):


   - `Stack`:基于 `Vector` 的后进先出(LIFO)栈实现,但通常推荐使用 `Deque` 或 `List` 来实现栈的功能,因为 `Stack` 类是遗留的。

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

uni-app uni-data-picker级联选择器无法使用和清除选中的值

出现问题&#xff1a; 使用点击右边的叉号按钮无法清除已经选择的uni-data-picker值 解决办法&#xff1a; 在uni-app uni-data-picker使用中&#xff0c;要添加v-model&#xff0c;v-model在官网的示例中没有体现&#xff0c;但若不加则无法清除。 <uni-data-picker v-m…

激光与相机融合标定汇总:提升融合算法的精度与可靠性(附github地址)

前言 随着科技的飞速发展&#xff0c;激光技术与相机技术的融合已成为推动智能化影像发展的重要力量。这种融合不仅提高了成像的精度和效率&#xff0c;还为相关行业带来了革命性的变革。在这篇博客中&#xff0c;我们将深入探讨激光与相机融合标定的原理及其在各个领域的应用…

关于bim数字孪生threejs中使用glb文件大小优化及加载慢的说明(笔记)

在用three.js开发的时候发现&#xff0c;稍微大一点的glb或者fbx文件加载的时候很慢很卡 一直不理解这个卡和慢取决于哪些条件&#xff0c;下面来详细说一下 1、关于模型 不是越大加载越卡顿&#xff0c;而是却决于三角面数量&#xff0c;当累计三角面数量达到3000万时会出现明…

C语言基础——操作符

ʕ • ᴥ • ʔ づ♡ど &#x1f389; 欢迎点赞支持&#x1f389; 个人主页&#xff1a;励志不掉头发的内向程序员&#xff1b; 专栏主页&#xff1a;C语言基础&#xff1b; 文章目录 前言 一、操作符的分类 二、二进制和进制转换 2.1 二进制转十进制 2.1.1 十…

FreeRTOS信号量和互斥量

信息量 简介 信号量是一种解决同步问题的机制&#xff0c;可以实现对共享资源的有序访问。 前面介绍的队列(queue)可以用于传输数据&#xff1a;在任务之间、任务和中断之间。 消息队列用于传输多个数据&#xff0c;但是有时候我们只需要传递状态&#xff0c;这个状态值需要用…

并发编程基础概念

相关概念 并行 并行是指同一个时刻&#xff0c;多个任务同时进行。只有在多核CPU下才会发生。 并发 并发是指单个CPU在不同任务之间来换切换工作&#xff0c;但是同一时刻只有一个任务在工作。由于CPU的切换速度很快&#xff0c;给人的感受是多个任务在一起运行。 串行 串行…

破解对LabVIEW的偏见

LabVIEW被广泛应用于科学研究、工程测试和自动化控制领域&#xff0c;具有专业性和高效的开发能力。尽管有人对其存在偏见&#xff0c;认为不如C语言&#xff0c;但LabVIEW的图形化编程、强大集成能力、丰富社区支持和专业功能&#xff0c;使其在许多实际应用中表现出色。通过多…

山东大学-科技文献阅读与翻译(期末复习)(选择题+翻译)

目录 选择题 Chapter1 1.which of the following is not categorized as scientific literature 2.Which of the followings is defined as tertiary(三级文献) literature? 3.Which type of the following international conferences is listed as Number one conference…

jeecg启动微服务并注册到本地nacos

1、maven勾选环境和微服务模式&#xff0c;并刷新 2、pom文件修改nacos注册地址 3、本地启nacos gateway 和自己想要的cloud下面的模块pos sys 4、打断点测试接口&#xff0c;访问gateway端口和想要测试的地址

Java-记一次Springboot版本升级导致的问题

前言 根据相关情况&#xff0c;需要将SpringBoot的版本由原来的2.1.8.RELEASE版本升级至2.3.8.RELEASE。 启动项目后报错&#xff1a; 具体报错信息如下&#xff1a; Description: An attempt was made to call a method that does not exist. The attempt was made from the…

互联网信任危机:Perplexity搜索引擎如何破坏内容创作者的权益

前段时间&#xff0c;Perplexity搜索引擎还是一颗冉冉升起的明日之星&#xff0c;手握巨额投资&#xff0c;有很美好的未来前景&#xff0c;这时&#xff0c;如果不出意外的话&#xff0c;要出意外。 喜好儿网 Perplexity这家公司&#xff0c;它正试图通过创建一个新型的“答…

UI设计必备的6个网站,赶紧收藏!

6个UI设计必备网站&#xff0c;找素材、找灵感一步到位&#xff0c;赶紧收藏起来吧&#xff01; 1、菜鸟图库 UI图片素材-UI图片模板免费下载 - 菜鸟图库 菜鸟图库提供了超多免费设计素材&#xff0c;在这里你可以找到平面、UI、电商等设计类素材&#xff0c;还有大量的高清背…

数字信号处理实验四(FIR数字滤波器设计)

FIR数字滤波器设计&#xff08;2学时&#xff09; 要求&#xff1a; 设计一个最小阶次的低通FIR数字滤波器&#xff0c;性能指标为&#xff1a;通带0Hz~1500Hz&#xff0c;阻带截止频率2000Hz&#xff0c;通带波动不大于1%&#xff0c;阻带波动不大于1%&#xff0c;采样频率为8…

杂谈咋说-事业编与公务员建议收藏!

杂谈咋说-事业编与公务员建议收藏&#xff01; 什么是铁饭碗 在中国&#xff0c;「铁饭碗」这个词常常被用来形容那些稳定、有保障的工作。 当我们谈论"铁饭碗"时&#xff0c;人们往往会将公务员和事业编制人员进行比较。 尽管这两者都是相对稳定的工作&#xff…

Cesium 在加载 3dTiles 如何如何获取ID

文章目录 问题分析问题 加载的 3dTiles 打印content.getFeature(i)出来后如图所示,想获取到id值 分析 var tileset = mapLayer.init3dTileLayer({url:it.url,maximumMemoryUsage: it.maximumMemoryUsage,

golang使用RSA加密和解密

目录 前提 生成RSA公钥和密钥 读取文件 加密 解密 前提 本文章我们是先读取的RSA文件&#xff0c;所以需要先生成RSA&#xff0c;并且保存在文件中&#xff0c;再进行加密 生成RSA公钥和密钥 如果没有公钥和密钥&#xff0c;可以先看看我上一篇文章 生成RSA公钥和密钥h…

一个AI图片生成工具导航网站

上周末上线了一个AI图片生成工具导航网站&#xff0c;主要是面向AI图片工具这个垂直领域。 https://chatgpt-image-generator.com/ 目标是通过收集当下的一些工具&#xff0c;然后进行分类管理&#xff0c;一方面方便大家发现新的工具&#xff0c;另一方面能够更加有针对性、…

Kotlin vs Java:深入解析两者之间的最新差异与优劣(全面指南)

文章目录 1. 概述2. 语法简洁性3. 空安全4. 扩展函数5. 协程6. 数据类7. 智能类型转换8. 默认参数与命名参数9. 无 checked exceptions10. 单例模式总结 &#x1f389;欢迎来到Java学习路线专栏~探索Java中的静态变量与实例变量 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨…

python CSSE7030

1 Introduction In this assignment, you will implement a (heavily) simplified version of the video game ”Into The Breach”. In this game players defend a set of civilian buildings from giant monsters. In order to achieve this goal, the player commands a s…

上位机图像处理和嵌入式模块部署(mcu之静态库生成和使用)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 很多同学做了很长时间的mcu和keil开发&#xff0c;都认为keil工程中必须包含所有的源代码&#xff0c;其实这是不对的。如果有一些代码我们不希望别…