Set, List , Map 容器的深入研究

本文深入探讨了Java集合框架中的Collection、Set、List、Map接口及其实现类,包括HashSet、TreeSet、LinkedHashSet、ArrayList、LinkedList、HashMap、TreeMap、LinkedHashMap、ConcurrentHashMap等。同时介绍了线程安全与非线程安全的区别,以及如何处理线程安全问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


Collection 接口: 

  Set, List ,都继承了Collection;

  

  Set接口实现类:(元素唯一性) --------Thinking Java Pg 477

  HashSet : 效率高,内部由快速查找设计的,优势主要体现在添加和查询; 

 TreeSet :   保持有序的序列,底层为树结构, 迭代要比HashSet快,元素必须实现compareble接口;

 LinkedHashSet : 效率高,并且保持了有序的序列;但是它的效率还是没有HashSet高,内部用链表维护元素的次序;


List接口实现类:

 ArrayList :   List 接口的大小可变数组的实现。查询效率极快,实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现List 接口外,此类还提供一些方法来作内部用来存储 列表的数组的大小。(此类大致上等同于Vector 类,除了此类是不同步的。)

  注意:ArrayList 是线程不安全的,需要通过 List list = Collections.synchronizedList(new ArrayList(...));解决线程安全;

LinkedList:  是由双向链表实现的,在插入和删除元素时,使用LinkedList较合适, List 接口的链接列表实现。实现所有可选的列表操作,并且允许所有元素(包括null)。除了实现List 接口外,LinkedList 类还为在列表的开头及结尾    getremoveinsert 元素提供了统一的命名方法。这些操作允许将链接列表用作堆栈,队列。


Map 接口:(键值对) ---------Thinking Java Pg 485

HashMap : 线程不安全的,效率提高了,取代了HashTable,因为HashTable虽然是线程安全的,但是需要初始化容器和加载因子,大大影响其性能,所以被HashMap取代;

TreeMap : 基于黑树的实现,主要的特点是所得到的经过是经过排序的;

LinkedHashMap : 类似HashMap,但是迭代遍历它时,取得的“键值对”顺序为插入时的顺序,比HashMap效率慢一点,但是如果用迭代访问时反而更快,因为它使用了链表维护                                 了内部次序;

ConCurrentHashMap: 线程安全的,不涉及同步加锁;


注意:   ConcurrentHashMap, CopyOnWriteArrayList, CopyOnWriteArraySet 都是线程安全的,专门来处理线程安全问题;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值