2、并发集合了解哪些?
1)并发List,包括Vector和CopyOnWriteArrayList是两个线程安全的List,Vector读写操作都用了同步,CopyOnWriteArrayList在写的时候会复制一个副本,对副本写,写完用副本替换原值,读时不需要同步。
2)并发Set,CopyOnWriteArraySet基于CopyOnWriteArrayList来实现的,不允许存在重复的对象。
3)并发Map,ConcurrentHashMap,内部实现了锁分离,get操作是无锁的。
4)并发Queue,ConcurrentLinkedQueue适用于高并发场景下的队列,通过无锁方式实现。 BlockingQueue阻塞队列,应用场景,生产者-消费者模式,若生产快于消费,生产队列装满时会阻塞,等待消费。
5)并发Deque, LinkedBlockingDueue没有进行读写锁分离,同一时间只能有一个线程对其操作。
6)并发锁重入锁ReentrantLock,互斥锁,一次最多只能一个线程拿到锁。
7)读写锁ReadWriteLock,有读取和写入锁两种,读取允许多个读取线程同时持有,而写入只能有一个线程持有。
3、列举java的集合以及集合之间的继承关系
1.单列表
2.双列表
4、容器类介绍以及之间的区别
1)Collection接口:集合框架的根接口,它是集合类框架中最具一般性的顶层接口。
2)Map接口:提供了键值对的映射关系的集合,关键字不能有重复值,每个关键字至多可映射一个值。HashMap(通过散列机制,用于快速访问),TreeMap(保持key处于排序状态,访问速度不如hashmap), LinkedHashMap(保持元素的插入顺序)
3)Set接口:不能包含重复的元素,LinkedHashSet TreeSet(用红黑树来存储元素) HashSet
4)List接口:可通过索引对元素进行精准的插入和查找,实现类有ArrayList LinkedList
5)Queue接口:继承自Collection接口,LinkedList实现了Queue接口,提供了支持队列的行为。
6)Iterator接口:为了迭代集合
7)Comparable接口:用于比较
5、List,Set,Map的区别
- Set是一个无序的集合,不能包含重复的元素;
- list是一个有序的集合可以包含重复的元素,提供了按索引访问的方式;
- map包含了key-value对,map中key必须唯一,value可以重复。
6、HashMap的实现原理
1)数据结构
jdk1.7及以前,HashMap由数组+链表组成,数组Entry是HashMap的主体,Entry是HashMap中的一个静态内部类,每一个Entry包含一个key-value键值对,链表是为解决