目录
1、说一说集合类的体系结构
我们常见的集合主要有两大类,分别是单列集合和双列集合
-
单列集合的顶级接口是Collection,它下面有两个主要的子接口分别是List和Set
List的特点是元素有序的,可以重复的;Set的特点是元素无序的,不可重复的
List下我们常用的类有ArrayList、LinkedList等,Set下我们常用的类有HashSet、LinkedHashSet、TreeSet等
-
双列集合的顶级接口是Map,它的特点是每个元素都有键和值两部分组成,而且键不能重复
Map接口下我们常用的类有:HashMap、LinkedHashMap、TreeMap等
2、聊聊集合类的底层数据结构
集合主要分为双列集合和双列集合
-
双列集合都是Map的实现类,主要有HashMap、LinkedHashMap和TreeMap
-
HashMap: JDK1.8之前是由数组+链表组成的,JDK1.8之后,为了提升效率,在当链表的长度>8,并且数组长度>=64的时候,链表就会转换为红黑树
-
LinkedHashMap:继承自HashMap,在HashMap的基础上增加了一条双向链表,来保持键值对的插入顺序。
-
TreeMap:底层是红黑树
-
-
单列集合主要是List和Set
List有ArrayList和LinkedList,ArrayList底层是数组,查询快,增删慢;LinkedList底层是双向链表,查询慢,增删快
Set有HashSet、LinkedHashSet和TreeSet,它的实现原理和对应的Map是一样的,底层都是用的对应Map的key实现
3、ArrayList和LinkedList的区别
ArrayList和LinkedList都是Java中的单列结合,都是有序的,可重复的
不同点有下面几个:
-
底层数据结构不同:ArrayList 底层是动态数组,而LinkedList底层是双向链表
-
使用场景不同&