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)。所以,"三"自然位于"五"的前面。** 数据的删除: ![](https://img-blog.csdnimg.cn/direct/4b60d9718b394ae88dcfb58af0d4ba9d.jpeg) 结果输出: ![](https://img-blog.csdnimg.cn/direct/333f092f6d5b4ab2a4abf2a71b8f912c.jpeg) 删除元素: - \`list.removeFirst();\` ------ 移除 "四",列表变为:\`\["二", "一", "三", "五", "六", "三", "三"\]\` - \`list.removeLast();\` ------ 移除最后一个 "三",列表变为:\`\["二", "一", "三", "五", "六", "三"\]\` - \`list.remove("三");\` ------ 移除列表中第一次出现的 "三",列表变为:\`\["二", "一", "五", "六", "三"\]\` - \`list.remove(2);\` ------ 移除索引 2 的元素 "五",列表变为:\`\["二", "一", "六", "三"\]\` 总结一下,\`removeFirst()\` 移除了列表的第一个元素,\`removeLast()\` 移除了列表的最后一个元素,\`remove("三")\` 移除了列表中第一次出现的 "三",而 \`remove(2);\` 移除了索引 2 的元素,此时 "五" 已经不在索引 2 的位置,因此实际上移除的是 "五" 被删除后索引 2 处的元素,即 "六" 前面的 "一"。但根据描述,\`remove(2);\` 实际上移除的是列表中修改后索引 2 处的元素,即原本的 "五" 被删除后的 "六",这导致最终列表为 \`\["二", "一", "六", "三"\]\`。 ##### 3)\`Vector\`:类似于 \`ArrayList\`,但线程安全。 ![](https://img-blog.csdnimg.cn/direct/c7f5356dac3c4719ba026b96840ed998.jpeg) #### 2. Set(集合): ##### 1) \`HashSet\`:基于哈希表的实现,不允许重复元素,元素无序。 ![](https://img-blog.csdnimg.cn/direct/c45379f0ab3c4cef8403e68fe6584578.jpeg) 1)调用名为Set的接口,将值由该接口储存起来 2)是定义的接口只接收String类型数据 3)实例化HashSet对象,该对象是Set接口的其中一个类 ![](https://img-blog.csdnimg.cn/direct/2c632acc5f364569a18944571dff4651.jpeg) ![](https://img-blog.csdnimg.cn/direct/59774bb41de545879e2ac85ed3e002f8.jpeg) ![](https://img-blog.csdnimg.cn/direct/f975ba2c4e8f4cf0bc07eec2aecce9c1.jpeg) ![](https://img-blog.csdnimg.cn/direct/92c65aca609f4ddb8baa40bde64a1906.jpeg) ##### 2) \`TreeSet\`:基于红黑树的实现,不允许重复元素,元素按照自然顺序或自定义比较器排序。 排序: ##### ![](https://img-blog.csdnimg.cn/direct/122de2deee954cc09ca68f6513218fa2.jpeg) 默认是升序排序: ##### ![](https://img-blog.csdnimg.cn/direct/7f4ce6c41daf49aaa443626bf6301f07.jpeg) 重写排序方法使排序方法为降序排序: ![](https://img-blog.csdnimg.cn/direct/698d98f91aa745afa2bffc74eef27839.jpeg) ![](https://img-blog.csdnimg.cn/direct/2c8068831b8d43b9a0acf45b21a67bcb.jpeg) ![](https://img-blog.csdnimg.cn/direct/54785b4da56b4e7f82d02d2d586740e3.jpeg) 查找和删除元素: ![](https://img-blog.csdnimg.cn/direct/a89e0b8050d24c229726512a997bd6dc.jpeg) ##### ![](https://img-blog.csdnimg.cn/direct/9ec16c03ff2349728986bac429c7f9d3.jpeg) ###### 子集和迭代器: ##### ![](https://img-blog.csdnimg.cn/direct/e152a611f2f14577baa8ea64a5ea1181.jpeg) ![](https://img-blog.csdnimg.cn/direct/37198cb1c90249188b784e3dc08d9447.jpeg) ##### ![](https://img-blog.csdnimg.cn/direct/c653f9153e54485688086301682dc99c.jpeg) #### ![](https://img-blog.csdnimg.cn/direct/82d4b2e4834a4ac586f00832cc1e1e8b.jpeg) 3)\`LinkedHashSet\`:结合了 \`HashSet\` 的高速特性和 \`LinkedHashMap\` 的迭代顺序,元素按插入顺序排列。 ![](https://img-blog.csdnimg.cn/direct/de785fdb6f7a4f868e31be7193c98074.jpeg) ![](https://img-blog.csdnimg.cn/direct/05e8ed7c9af248aca2316905145cd6c1.jpeg) #### 3. Map(映射): ##### 1) \`HashMap\`:基于哈希表的实现,存储键值对,键不能重复,不保证映射的顺序。 ![](https://img-blog.csdnimg.cn/direct/e1f7b12ffedf48668e50b6c9b33ac69a.jpeg) ![](https://img-blog.csdnimg.cn/direct/1782db5f68d14326b9cb8057212eb429.jpeg) ![](https://img-blog.csdnimg.cn/direct/7e6e266c1dca464681ae5bbe65f5e4b1.jpeg) ![](https://img-blog.csdnimg.cn/direct/814b24cee64f439b8cde477ab314e40d.jpeg) ![](https://img-blog.csdnimg.cn/direct/4f82267794e54743b5306b7ac08e96d7.jpeg) ![](https://img-blog.csdnimg.cn/direct/25b8510e102847f88c7016d5e92fce09.jpeg) 输出结果: ![](https://img-blog.csdnimg.cn/direct/fa0de6fc4d254a9cbe39e9e0a6ba8075.jpeg) ##### 2)\`TreeMap\`:基于红黑树的实现,存储键值对,键不能重复,键值对按照键的自然顺序或自定义比较器排序。 ##### ![](https://img-blog.csdnimg.cn/direct/5dfb88dd01e34037b0b0f22f8a63505d.jpeg) ![](https://img-blog.csdnimg.cn/direct/7455896bf5944580b4f5d25d6a9a6946.jpeg) ##### ![](https://img-blog.csdnimg.cn/direct/98a2a1acd84c48658318a455cf94344b.jpeg) ![](https://img-blog.csdnimg.cn/direct/ef2c98f1a8b8456f8923b8f1494a81cc.jpeg) ##### ![](https://img-blog.csdnimg.cn/direct/be1aad5dab13411ebc500a37cee9f7f0.jpeg) ![](https://img-blog.csdnimg.cn/direct/e68b4d3024d944dba0fafd08f6cd7dff.jpeg) ##### ![](https://img-blog.csdnimg.cn/direct/5b729152176e4a6281897b8c158680d6.jpeg) ![](https://img-blog.csdnimg.cn/direct/7bf02927f7da49acae3cbd9799626ae7.jpeg) ##### ![](https://img-blog.csdnimg.cn/direct/a6863a20be044245a6b07ee011d732d3.jpeg) ##### ![](https://img-blog.csdnimg.cn/direct/5265dd9f48be4a8db5c4cf0d8baa68fb.jpeg) 3)\`LinkedHashMap\`:结合了 \`HashMap\` 的高速特性和 \`LinkedHashMap\` 的迭代顺序,映射按照插入顺序排列。 添加和打印: ![](https://img-blog.csdnimg.cn/direct/9b5dffff43d74aca9192e1639c3eba49.jpeg) ![](https://img-blog.csdnimg.cn/direct/a0c65ae4e0ee4c5eb8e8e4b2b4240f34.jpeg) 访问顺序:![](https://img-blog.csdnimg.cn/direct/2ee54c178c2f462595bf0e7978348f6d.jpeg) ![](https://img-blog.csdnimg.cn/direct/f53009c819294506940ba4ef31fe3942.jpeg) ![](https://img-blog.csdnimg.cn/direct/bef5c7424c3e4ecaaded18ebd3ae80d7.jpeg) ![](https://img-blog.csdnimg.cn/direct/421090092473412e816ee68a1d76d793.jpeg) 移除最旧的条目: 覆盖重写 removeEldestEntry方法 ![](https://img-blog.csdnimg.cn/direct/4d324fdaa85940019e4d444a3cd07afb.jpeg) ![](https://img-blog.csdnimg.cn/direct/2dc57d9bcfdb4758a62c629a2fc4162e.jpeg) ![](https://img-blog.csdnimg.cn/direct/f0af2e3a4b544d74a1896939969bd021.jpeg) #### 4. Queue(队列): ##### 1)\`ArrayDeque\`:基于数组的双端队列实现,可以高效地从两端添加和移除元素。 ##### ![](https://img-blog.csdnimg.cn/direct/2e590807916c496cabf7f94c1a2e19bf.jpeg) ##### ![](https://img-blog.csdnimg.cn/direct/5ac8e6ed807049669bc0273a04acb570.jpeg) ##### ![](https://img-blog.csdnimg.cn/direct/c3cdccfe2e7140619620869fd26d71c8.jpeg) ##### ![](https://img-blog.csdnimg.cn/direct/93ffbd2668de4e5c97ed64e10033d538.jpeg) ##### ![](https://img-blog.csdnimg.cn/direct/65de1967bf2e45028fa04eeb455f5746.jpeg) 2)\`LinkedList\`:由于其双向链表的性质,也常被用作队列。 ![](https://img-blog.csdnimg.cn/direct/d33fe73cad614f37914bbb736bcf67ba.jpeg) ![](https://img-blog.csdnimg.cn/direct/55b5fc44d99e4f70bd82967ab16ce471.jpeg) ![](https://img-blog.csdnimg.cn/direct/12ab3f7913f74094afb5d753343daad2.jpeg) ![](https://img-blog.csdnimg.cn/direct/394e9e6d99644e2eaf9e9d8d8c668e2a.jpeg) ![](https://img-blog.csdnimg.cn/direct/a1922975ade7477e9d8c602a9d8d07f2.jpeg) ![](https://img-blog.csdnimg.cn/direct/138a4782b9624331a10c7e0235084384.jpeg) ![](https://img-blog.csdnimg.cn/direct/33b47c71978241c987c5bcf5e77a51de.jpeg) ![](https://img-blog.csdnimg.cn/direct/59829409121b451c9f09cdfda35bf8f2.jpeg) ![](https://img-blog.csdnimg.cn/direct/2bfbc1da91a84d0ab6722ae70ee8bfae.jpeg) ![](https://img-blog.csdnimg.cn/direct/574bb84f4fd2448b9085cae5df38c04f.jpeg) #### 5. Stack(栈): ##### - \`Stack\`:基于 \`Vector\` 的后进先出(LIFO)栈实现,但通常推荐使用 \`Deque\` 或 \`List\` 来实现栈的功能,因为 \`Stack\` 类是遗留的。 ![](https://img-blog.csdnimg.cn/direct/9d2244473d2e4a31855be4f28c6a22f8.jpeg) ![](https://img-blog.csdnimg.cn/direct/49507997c9fe4b8da2e0afaf5eee7cc2.jpeg)![](https://img-blog.csdnimg.cn/direct/fd49e7483447469299595bebbe681221.jpeg)![](https://img-blog.csdnimg.cn/direct/771357579b1b4421b7ca09360be4a24d.jpeg) ![](https://img-blog.csdnimg.cn/direct/ef207e113dfd48de83c4ca7dc848d831.jpeg) ![](https://img-blog.csdnimg.cn/direct/ff30af8c786a4243bb548e50b00b2863.jpeg)

相关推荐
v维焓3 分钟前
C++(思维导图更新)
开发语言·c++·算法
jiet_h3 分钟前
深入解析KSP(Kotlin Symbol Processing):现代Android开发的新利器
android·开发语言·kotlin
_未知_开摆5 分钟前
uniapp APP端在线升级(简版)
开发语言·前端·javascript·vue.js·uni-app
花月C11 分钟前
Spring IOC:容器管理与依赖注入秘籍
java·开发语言·rpc
ylfhpy17 分钟前
Java面试黄金宝典22
java·开发语言·算法·面试·职场和发展
..过云雨42 分钟前
11. 【C++】模板进阶(函数模板特化、类模板全特化和偏特化、模板的分离编译)
开发语言·c++
风象南1 小时前
Spring Boot 实现文件秒传功能
java·spring boot·后端
橘猫云计算机设计1 小时前
基于django优秀少儿图书推荐网(源码+lw+部署文档+讲解),源码可白嫖!
java·spring boot·后端·python·小程序·django·毕业设计
黑猫Teng1 小时前
Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现与实战指南
java·spring boot·后端
星河浪人1 小时前
Spring Boot启动流程及源码实现深度解析
java·spring boot·后端