java 集合框架 比较_Java中集合框架的比较

List Set Map比较:

List:有序,可重复。

Set:无序,不重复。

Map:键值对存储,value可重复,key不可重复。

LinkedList和ArrayList:

LinkedList: 使用双向链表,插入、删除效率高,随机访问效率低

ArrayList: 底层使用数组,在内存中分配连续的空间,遍历元素和随机访问效率高;插入、删除特定位置效率低

Vector和ArrayList

Vector是线程同步的,线程安全,在处理大量数据的时候,速度较慢

ArrayList不具备线程同步的安全性,所以速度更快

HashSet、LinkedHashSet、TreeSet

HashSet:用来存储互不相同的任何元素

LinkedHashSet:使用链表扩展实现HashSet类,支持对元素的排序。注意:如果不需要维护元素被插入的顺序,就应该使用HashSet,更加高效

TreeSet:可以确保所有元素是有序的

HashMap、LinkedHashMap、TreeMap

HashMap:查询、插入、删除效率高

LinkedHashMap:支持元素的插入顺序

TreeMap:遍历有序集合时效率高

HashMap与Hashtable之间的异同

1、实现原理相同,功能也相同,在很多情况下可以互用

2、HashMap实现了Map接口;Hashtable继承自Dictionary

3、HashMap非线程安全;Hashtable支持线程安全

4、HashMap允许空值;Hashtable不允许空值

Map的使用建议:

1、如果更新的时候不需要保持Map中元素的顺序,使用HashMap

2、如果希望保持Map中的元素顺序和插入顺序一致,使用LinkedHashMap

3、如果希望可以使用比较器进行排序,那么使用TreeMap

4、如果是在多线程场景,希望线程安全,就使用Hashtable

Queue:队列,先进先出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值