java集合类list使用_Java集合类: Set、List、Map、Queue使用场景总结

一.List总结概述

List继承了Collection,是有序的列表。

实现类有ArrayList、LinkedList、Vector、Stack等

ArrayList是基于数组实现的,是一个数组队列。可以动态的增加容量!

LinkedList是基于链表实现的,是一个双向循环列表。可以被当做堆栈使用!

Vector是基于数组实现的,是一个矢量队列,是线程安全的!

Stack是基于数组实现的,是栈,它继承与Vector,特性是FILO(先进后出)!

二.List使用场景

在实际的应用中如果使用到队列,栈,链表,首先可以想到使用List。不同的场景下面使用不同的工具,效率才能更高!

1.当集合中对插入元素数据的速度要求不高,但是要求快速访问元素数据,则使用ArrayList!

2. 当集合中对访问元素数据速度不做要求不高,但是对插入和删除元素数据速度要求高的情况,则使用LinkedList!

3.当集合中有多线程对集合元素进行操作时候,则使用Vector!但是现在BVector现在一般不再使用,如需在多线程下使用,可以用CopyOnWriteArrayList,在java.util.concurrent包下。

4.当集合中有需求是希望后保存的数据先读取出来,则使用Stack!

三、Set使用场景

1.HashSet是一个无序的集合,基于HashMap实现;TreeSet是一个有序的集合,基于TreeMap实现。

2.HashSet集合中允许有null元素,TreeSet集合中不允许有null元素。

3.HashSet和TreeSet都是非同步!在使用Iterator进行迭代的时候要注意fail-fast。

4.HashSet的性能总是比TreeSet好(特别是最常用的添加、查询元素等操作),因为TreeSet需要额外的红黑树算法来维护集合元素的次序。只有当需要一个保持排序的Set时,才应该使用TreeSet,否则都应该使用HashSet

5.对于普通的插入、删除操作,LinkedHashSet比HashSet要略慢一点,这是由维护链表所带来的开销造成的。不过,因为有了链表的存在,遍历LinkedHashSet会更快

四、Map使用场景

1.HashMap和Hashtable的效率大致相同,因为它们的实现机制几乎完全一样。但HashMap通常比Hashtable要快一点,因为Hashtable需要额外的线程同步控制

2.TreeMap通常比HashMap、Hashtable要慢(尤其是在插入、删除key-value对时更慢),因为TreeMap底层采用红黑树来管理key-value对

3.使用TreeMap的一个好处就是: TreeMap中的key-value对总是处于有序状态,无须专门进行排序操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值