JAVA 集合
Collection 接口
List
有序、可重复,可插入 多个null值
ArrayList
容量 10,加载因子 0.5
有序(下标是连续)、数组LinkeddList
双向链表Vector
数组、线程安全,效率低
Set
无序、不可重复,只能插入 一个null值
TreeSet
定义排序规则
实现Comparable接口
,重写CompareTo()方法
自定义类实现Comparetor接口
,重写Compare()方法
HashSet
不可重复的标准
先HashCode()
、再equals()
底层是HashMap的键
,值是统一的private static final Object PRESENT = new Object();
Map 接口
键值对、无序、不可重复
-
HashMap
容量:16,加载因子 0.75
键可以唯一空值、线程不安全
hash 算法:
java
所有对象都有个hashCode值
, 通过值来分散下标
(jdk1.8)底层是
: 数组 + 双向链表(红黑树):
链表的长度 > 8 为红黑树
链表长度 < 6 就为链表
底层示意图:
-
ConCurrentHashMap
线程安全
分段锁:
将数据分成一段一段的存储,给每一段数据配置一把锁; 当一个线程占用一段数据时,其他线程还能访问其他段的数据。
Segment 继承 ReentrantLook 锁,用于存放数组,HashEntry[],默认构造方法,最大并发数 16,无法扩展。
一个包含16个锁的数组
,每个锁保护所有散列桶的1/16
,第n个桶
,由第(N mod 16)
个锁来保护。 -
TreeMap
键为 TreeSet 同理,可排序 -
HashTable
线程安全、键值对不能为空。
在get()/put()
方法上都加了synchronized锁
。
`
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于