Java集合
1.List/Set/Map
-
Queue:队列
-
List(顺序的好帮手): 存储的元素是有序的、可重复的。
-
Set(独一无二性质): 存储的元素是无序的、不可重复的。
-
Map(用 Key 搜索): 使用键值对(key-value)存储,类似于数学上的函数 y=f(x),“x”代表
key,"y"代表 value,Key 是无序的、不可重复的,value 是无序的、可重复的,每个键最多映射到一个值。Queue / List / Set 继承 Collection接口
LinkedList 实现了Queue接口
LinkedList / ArrayList 继承 List 接口
2. Collection 子接口之 List
2.1ArrayList 与 LinkedList 区别
-
ArrayList 实现了基于动态数组的数据结构,
LinkedList实现了基于双向链表的数据结构 -
ArrayList 查找速度快,增加和删除动作慢
LinkedList 查找速度慢,增加和删除动作快 -
ArrayList 和 LinkedList 都是不同步的,也就是不保证线程安全
3. Collection 子接口之 Set
3.1HashSet、LinkedHashSet 和 TreeSet 区别
- HashSet : Set 接口的主要实现类 ,底层是 HashMap,线程不安全的,可以存储 null 值;
- LinkedHashSet : HashSet 的子类,能够按照添加元素的顺序遍历;
- TreeSet :底层使用红黑树,能够按照添加元素的顺序遍历,排序的方式有自然排序和定制排序。
4.Map接口
4.1 HashMap 和 Hashtable 的区别
-
HashMap 是非线程安全的
HashTable 是线程安全的,内部方法经过synchronized 修饰。 -
HashMap的底层是数组+链表or红黑树
HashTable的底层是数组+链表