几个集合类的区别

常用集合类的继承结构如下: 
Collection<--List<--Vector 
Collection<--List<--ArrayList 
Collection<--List<--LinkedList 
Collection<--Set<--HashSet 
Collection<--Set<--HashSet<--LinkedHashSet 
Collection<--Set<--SortedSet<--TreeSet 
Map<--SortedMap<--TreeMap 
Map<--HashMap 


list

优点

缺点

ArrayList

采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中

插入删除时非常麻

LinkedList

采用的将对象存放在独立的空间中,而且在每个空间中还保存下一个链接的索引

查找非常麻烦要丛第一个索引开始

大多数情况下,从性能上来说ArrayList最好,但是当集合内的元素需要频繁插入、删除时LinkedList会有比较好的表现,但是它们三个性能都比不上数组,另外Vector是线程同步的。

所以VectorArrayListLinkedList 的选取: 
1
、如果能用数组的时候(元素类型固定,数组长度固定),请尽量使用数组来代替Linked 
2
、如果没有频繁的删除插入操作,又不用考虑多线程问题,优先选择ArrayList 
3
、如果在多线程条件下使用,可以考虑Vector 
4
、如果需要频繁地删除插入,就可以选用LinkedList 
5
、当然如果你什么都不知道,用ArrayList没错。

 

HashSetTreeSet

 HashSet的特性在于其内部对象的散列存取,即采用 哈希技术  

TreeSet存入的顺序跟存储的顺序不同,但是存储是 按照排序存储的 

 

HashMapTreeMap

HashMap — key/value对是按照Hash算法存储的
TreeMap — key/value对是排序(按key排序)存储的

HashMap通过hashcode对其内容进行快速查找,而 TreeMap中所有的元素都保持着某种固定的顺序,如果你需要得到一个有序的结果你就应该使用TreeMap(HashMap中元素的排列顺序是不固定的)。
HashMap 非线程安全 TreeMap 非线程安全

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值