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` 类是遗留的。

 

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

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

相关文章

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

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

蒙特卡洛法求定积分方

对于连续函数密度函数,求某一个区间的概率时,理论上通过积分获取, 以求曲线围成的面积为例 当我们在[a,b]之间随机取一点x时,它对应的函数值就是f(x)。接下来我们就可以用f(x)*(b-a)来粗略估计曲线下方的面积,也就是我…

Logback-打印方法名及代码行号

背景 公司产品使用了logback作为日志输出框架,日志输出的pattern里配置了打印调用方法名及代码行号的配置,但是实际输出的日志方法名总是显示? 在强迫症的驱使下,开启了探秘之旅 Logback版本 1.2.3 项目中Logging.pattern配置如下&#xff1…

Flutter循序渐进==>与基金mysql数据库交互

导言 债基基金的注意事项,别看收益不高,注意事项可真不少。最近买了CS一支基金,三周时间就亏掉两三个点(水平全网最差、赎回费和管理费全网最高)。就是冲着它的历史成绩去的,突然发现已经换了基金经理&…

【PHP项目实战训练】——后台-RBAC权限管理原理

👨‍💻个人主页:开发者-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…

awk的用法

目录 awk简述 awk的用法 选项 内置变量 命令格式 打印行号 打印指定行 打印奇偶行 按行取列 BEGIN打印模式 乘法计算 awk -v 变量赋值 awk的条件判断 面试题awk的三元表达式 awk的精确筛选 逻辑且、或关系 awk做小数运算 curl 练习 1.获取其中的所有子域名…

vivo 互联网自研代码评审 VCR 落地实践

作者:vivo 互联网效能平台团队- Chi Wei 本文介绍了vivo工程效能团队基于 Gitlab、Gerrit等开源工具搭建的VCR平台,代码评审idea插件开发及开发过程中遇到的挑战、困难,并分享了相应的应对策略和优化方案。 代码评审是软件质量保证一种活动&…

墨刀原型--多tab切换显示对应页面场景交互步骤

一般我们画原型页面,PC端或者APP端或小程序端,都会有页面会切换多个tab或状态,同时对应页面显示对应的页面数据。 设计思路如下: 以订单列表页面为例: 可以将订单列表页面分为3部分,固定的头部、状态栏、…

java和网络安全,哪个就业前景更大?

常年以来,Java一直占据着程序语言的前三名,因此也就成了许多进入IT行业的首选语言。但随着5G时代的兴起,网络安全也成了当今最火热的“风口行业”。导致很多年轻人不知如何选择,一直处于纠结徘徊的状态。下面盾叔就带大家了解一下…

Qt—贪吃蛇项目(由0到1实现贪吃蛇项目)

用Qt实现一个贪吃蛇项目 一、项目介绍二、游戏大厅界面实现2.1完成游戏大厅的背景图。2.2创建一个按钮,给它设置样式,并且可以跳转到别的页面 三、难度选择界面实现四、 游戏界面实现五、在文件中写入历史战绩5.1 从文件里提取分数5.2 把贪吃蛇的长度存入…

关于vue创建项目失败报错(镜像过期)的解决方案

在新建vue项目时出现以下错误: 原因: npm.taobao.org和registry.npm.taobao.org旧域名于2021年官方公告域名更换事件,已于2022年05月31日零时起停止服务,域名HTTPS证书于2024年1月22日正式到期,不可再用。 解决方案:…

【vue3】【vant】 移动端古诗词句子发布收藏项目

更多项目点击👆👆👆完整项目成品专栏 【vue3】【vant】 移动端古诗词句子发布收藏项目 获取源码方式项目说明:其中功能包括素材包含:项目运行环境运行截图 获取源码方式 加Q群:632562109项目说明&#xf…

突破Web3红海,DePIN如何构建创新生态系统?

撰文:TinTinLand 本文来源香港Web3媒体Techub News专栏作者TinTinLand 2023 年 DePIN 赛道的火热成为 Web3 行业的重点关注方向,当前如何以可扩展、去中心化、安全方式推动 DePIN 赛道赋能下的 AI 版图建设,寻找更多 Web3 行业创新机遇成为…

JS(JavaScript)事件处理(事件绑定)趣味案例

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

创新前沿:Web3如何颠覆传统计算机模式

随着Web3技术的快速发展,传统的计算机模式正面临着前所未有的挑战和改变。本文将深入探讨Web3技术的定义、原理以及它如何颠覆传统计算机模式,以及对全球科技发展的潜在影响。 1. 引言:Web3技术的兴起与背景 Web3不仅仅是技术创新的一种&…

QT中的样式表.qss文件

一、前言 qt中样式表的改变有几种方法,第一种就是直接在ui界面对应的组件右键修改样式表,还有一种就是直接在程序里面修改样式表,我知道的还有一种就是qss文件,这个文件就是将在程序中写的修改样式表的语句写道qss文件中&#xff…

次世代霍尔电磁摇杆搭配磁悬浮马达,这款手柄手感超丝滑,谷粒金刚3Pro体验

燥热的天气里,周末在家打上几局游戏,确实更容易放松身心,玩游戏的时候,键鼠、手柄一类的游戏外设特别重要,对我们的游戏体验影响很大,所以挑选起来总是格外挑剔。现在国产的游戏手柄已经今非昔比了&#xf…

grpc学习golang版(八、双向流示例)

系列文章目录 第一章 grpc基本概念与安装 第二章 grpc入门示例 第三章 proto文件数据类型 第四章 多服务示例 第五章 多proto文件示例 第六章 服务器流式传输 第七章 客户端流式传输 第八章 双向流示例 文章目录 一、前言二、定义proto文件三、编写server服务端四、编写client客…

YouTube广告投放指南:如何投放 YouTube视频广告

在海外广告投放中,YOutube是重要的渠道之一。这篇文章Maskfog将为你介绍Youtube广告类型以及广告投放流程,继续看下去! YouTube 视频广告的类型 1.信息流视频广告 信息流视频广告显示在 YouTube 主页、搜索结果页面上,并作为 Yo…

餐饮点餐系统

餐饮点餐系统是一款为餐厅和顾客提供便捷点餐服务的在线平台。 1.DDL CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY COMMENT 用户ID,username VARCHAR(50) NOT NULL UNIQUE COMMENT 用户名,password VARCHAR(255) NOT NULL COMMENT 密码,email VARCHAR(100) UNIQUE…