Java基础之集合

1、List、Set和Map

     List是有序的,可重复的;
     Set是无序的,不可重复的;
     Map根据键值来存储数据,key是不可重复的,无序的;value是无序的,可重复的。

2、ArrayList、LinkedList和Vector
     (1) ArrayList底层结构是Object数组,线程不安全,查询速度快,增删改指定位置速度慢,可通过下标直接访问,预留空间造成浪费。默认初始化大小为10,扩容为原数组大小的1.5倍。
       (2) LinkedList,底层是双向链表(jdk1.6是循环链表,jdk1.7后取消循环),线程不安全,增删改查速度都相对较慢。无法高效的随机查询,每个节点都指向前后节点造成空间浪费。
       (3)Vector,底层是Object数组,线程安全,大部分与ArrayList相似,在主要功能上加了关键字synchronized来实现同步(线程安全)。
注:RandomAccess 接口只是一个标识,标识这个类具有随机访问功能。是否具有随机访问功能并非与RandomAccess有直接关系,而是跟底层数据结构有关,数组支持随机访问,链表不支持。

3、HashMap、Hashtable和HashSet

 HashMapHashtableHashSet
线程是否安全非线程安全线程安全非线程安全
效率
支持nullkey和value都支持nullkey和value都不支持null,否则抛NullPointerException允许null值
初始化大小默认16默认11默认16
扩容>0.75时,扩容2倍>0.75时,扩容2倍+1>0.75时,扩容2倍
底层数据结构数组+链表,jdk1.8后加了红黑树数组+链表用HashMap的
实现接口MapMapSet
添加函数put()put()add()

4、ConcurrentHashMap和Hashtable
     

 ConcurrentHashMapHashtable
加锁方式jdk1.7每个数组 ReetrantLock分段锁(Segment ),jdk1.8 synchronized+CAS锁细化HashMap的关键方法上+synchronized
底层结构jdk1.7 数组+链表;jdk1.8 数组+链表+红黑树数组+链表
访问速度
增删改速度

5、HashSet、LinkedHashSet和TreeSet
  

 HashSetLinkedHashSetTreeSet
实现接口SetHashSetSet
底层HashMapHashMap红黑树
查询方式随机遍历按添加顺序遍历可按添加顺序遍历或自定义顺序遍历
排序方式随机排序按添加顺序排序自然排序和定制排序
特点无序,唯一,线程不安全有序,唯一,线程不安全有序,唯一,线程不安全

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值