Java编程技术之浅析Java容器技术
1|0Java容器
集合是一种存储数据的容器,是Java开发中使用最频繁的对象类型之一.
或许提起Collection,都会第一时间意识到List和Set以及Map等相关关键词。因为这几乎是我们日常开发里接触最多和遇见最频繁的,以及与数据处理交互最多的Java对象类型。换句话说,就是我们与数据进行处理的数据对象存储模型。但是:
List->[AbstractList,ArrayList,AbstractSeaquentialList,LinkedList]
Set->[AbstractSet,HashSet,SortedSet,TreeSet,LinkedHashSet]
Map->[AbstractMap,SortedMap,TreeMap,HashMap,LinkedHashMap,ConcurrentHashMap]
2|0Collection容器
Collection容器包含List和Set以及Queue子容器。
2|1List接口
List接口的实现类主要有:ArrayList、LinkedList、Stack以及Vector等
ArrayList[线程不安全]
LinkedList
2|2Stack
2|3Vector
2|4Set容器
Set接口的实现类主要有:HashSet、TreeSet、LinkedHashSet等
2|5Queue容器
3|0Map容器
Map是一个键值对集合,存储键、值和之间的映射。Key无序,唯一;value 不要求有序,允许重复。Map没有继承于Collection接口,从Map集合中时,只要给出键对象,就会返回对应的值对象。
在使用Java开发分布式系统以及应对高并发场景的情况,看得最多的就是在并发场景中切忌使用HashMap。也是最近几年面试热题之一,主要原因:
- [1].在JDK1.8版本之前,并发场景使用HashMap会导致出现死循环,从而导致CPU使用率会居高不下,这主要是JDK在设计HashMap扩容机制的局限导致。
- [2]在JDK1.8版本之后,虽然修复了HashMap扩容导致死循环的问题,但是在高并发场景下,依然会出现数据丢失以及不准确的情况发生。
Map的常用实现类:HashMap、TreeMap、HashTable、LinkedHashMap、ConcurrentHashMap以及Properties等
3|1HashMap[线程不安全]
[1].在JDK1.7中,当并发执行扩容操作时会造成环形链和数据丢失的情况
[2].在JDK1.8中,在并发执行put操作时会发生数据覆盖的情况
- HashMap的扩容条件:
HashMap有扩容机制,就是当达到扩容条件时会进行扩容:
[1].当HashMap中的元素个数(size)超过临界值(threshold)时就会自动扩容。
[2].在HashMap中,threshold = loadFactor * capacity
3|2TreeMap
3|3HashTable
3|4ConcurrentHashMap[线程安全]
3|5Properties
4|0Iterator容器
__EOF__

本文链接:https://www.cnblogs.com/mazhilin/p/13262278.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:Copyright © 2018-2021 PivotalCloud Technology Systems Incorporated. All rights reserved.
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏