ArrayList,Vector,LinkedList,HashSet,LinkedHashSet,TreeSet比较

List是一种有序的Collection, 元素可以重复

ArrayList是实现了基于动态数组的数据结构,使用可增长的长数组实现的.扩容增加50%,不可以设置,默认空间10

LinkedList基于链表的数据结构,使用双链表实现的,对于随机访问,ArrayList优于LinkedList,因为LinkedList需要移动指针,对于新增和删除LinkedList占优势,因为ArrayList需要移动数据.

Vector 是线程安全的,源码中有很多的synchronized,(扩容增加一倍,可以设置,默认空间10),效率相对低

Set不允许包含相同元素,如果是两个对象根据equals方法进行判断

HashSet:不能保证元素的排列顺序,不是同步的,集合元素可以是null但只能放入一个null.(内部是一个hashMap存储,具体逻辑:先获得对象hashCode(),然后根据其值决定对象在bucket中的存储位置)

LinkedHashSet同样根据hashCode值来决定元素存储位置,但同时使用链表维护元素的次序,迭代访问时候性能优于HashSet,但插入时性能弱与HashSet

TreeSetSortedSet接口的唯一实现类,可以确保集合处于排序状态.默认排序方式:从小到大,可以定制排序,需要实现Comparator接口,实现compare方法


HashMap  允许key, value为null, 且key为null的只有一个

HashTable ConcurrentHashMap 不允许 key和value为null,  因为他们是支持高并发的,再并发情况下,get( key) 时,无法判段是 set进去的null值,还是没有这个key,  如果,通过contains(key)判断,判断完再调用get,map的数据情况有可能已经发生变化。

TreeMap (基于红黑树,排过序)不允许key为null, 允许 value为null,因为再put时,调用了 compare进行 null值检查

HashSet 底层使用的HashMap实现的,add( value) 使用 map.put(value, new Object()); 故:可以为null值


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值