集合学习总结

1)常见的集合有哪些?

Map接口和Collection接口是所有集合框架的父接口

在这里插入图片描述

Collection接口的子接口包括:Set接口和List接口
Map接口的实现类主要有:HashMap、Hashtable、ConcurrentHashMap等
Set接口的实现类主要有:HashSet、TreeSet、LinkedHashSet等
List接口的实现类主要有:ArrayList、LinkedList、Vector等
集合的常用方法是get(),size(),foreach(),clear(),isEmpty(),remove()
Map类集合的增加是put()方法,而Collection类集合的增加是add()方法

2)常见的集合底层实现

1.ArrayList底层是数组。
2. LinkedList底层是双向链表。
3. Vector底层是队列。
4.HashMap底层是数组+链表+红黑树,当链表长度超过8时,将链表转换为红黑树
5.HashTable底层是数组+单项链表。
6.HashSet底层是数组+链表+红黑树,当链表长度超过8时,将链表转换为红黑树
7. LinkedHashMap底层修改自HashMap,此外还包含一个维护插入顺序的双向链表。
8.TreeSet底层是红黑树。
9. LinkedHashSet底层是LinkedHashMap(数组+单向链表+双向链表)。

3) HashMap与HashTable的区别?

1.HashMap是线程不安全的;Hashtable使用了synchronized关键字,是线程安全的;
2.HashMap允许K/V都为null;Hashtable的K/V都不允许为null;

4)ConcurrentHashMap实现原理

利用CAS+Synchronized来保证并发更新的安全,底层采用数组+链表+红黑树的存储结构。

5) ArrayList 和 Vector 的区别?

1.Vector 是线程安全的,ArrayList 是线程不安全的。
2.Vector在数据满时增长为原来的两倍,而ArrayList增长为原容量的1.5倍。

6) ArrayList和LinkedList的区别?

1.LinkedList基于链表的数据结构;ArrayList基于动态数组的数据结构
2.LinkedList在插入和删除数据时效率更高,ArrayList 查询效率更高;

7) HashMap 默认的初始化长度是多少?

1.在JDK中默认长度是16,并且默认长度和扩容后的长度都必须是 2 的幂。

猜你喜欢

转载自blog.csdn.net/weixin_46591962/article/details/109274522