JAVA集合汇总
继承结构:
/*
// Collection集合类
Collection<<interface>>
|__ List<<interface>>
| |__ ArrayList<<class>>
| |__ LinkedList<<class>>
| |__ Vector<<class>>
|__ Set<<interface>>
| |__ HashSet<<class>>
| |__ LinkedHashSet<<class>>
| |__ SortedSet<<interface>>
| |__* TreeSet<<class>>
|__ Queue<<interface>>
// Map集合类
Map<<interface>>
|__ HashMap<<class>>
|__ LinkedHashMap<<class>>
|__ Hashtable<<class>>
|__ SortedMap<<interface>>
|__* TreeMap<<class>>
*/
-
List
ArrayList
:基于数组,线程不安全;初始容量为10,加载因子为1,扩容量为:0.5 * 当前容量;LinkedList
:基于链表,线程不安全;链表结构无容量限制;Vector
:基于数组,线程安全;初始容量为10,加载因子为1,扩容量为:1 * 当前容量;-
ArrayList
与LinkedList
的区别ArrayList
:底层基于数组实现,增删慢,查询快;LinkedList
:底层基于链表实现,增删快,查询慢; -
自定义排序
方法1:集合元素通过实现
Comparable
接口中的CompareTo
方法进行排序;方法2:通过实现
Comparator
接口的compare
方法,使用Collections
或List
的sort
方法进行排序;
-
-
Set
Set集合的元素均不可重复;
HashSet
:基于哈希表,无序集合;LinkedHashSet
:基于哈希表和链表,有序集合;TreeSet
:基于红黑树(平衡二叉查找树),有序集合,元素不可为null;树结构无容量限制;-
HashSet
、LinkedHashSet
初始容量均为16,加载因子为0.75,扩容量为:1 * 当前容量; -
LinkedHashSet
默认按照插入顺序排序,不支持自定义排序; -
TreeSet
,如果元素是基本数据类型或其包装类型,则默认按升序排序;如果是元素是复杂对象类型,则需要元素实现Comparable
接口中的CompareTo
方法; -
以上三个Set都是线程不安全的
-
-
Map
Map集合的的Key均不可重复;
HashMap
:基于哈希表,线程不安全,无序集合,元素的Key、Value均可以为null;LinkedHashMap
:基于链表和哈希表,线程不安全,有序结合,元素的Key、Value均可以为null;Hashtable
:基于哈希表,线程安全,无序集合,元素的Key、Value均不可为null;TreeMap
:基于红黑树(平衡二叉查找树),有序集合,元素的Key不可为null,Value可以为null;HashMap
、LinkedHashMap
、Hashtable
初始容量为16,加载因子为0.75,扩容量为:1 * 当前容量;LinkedHashMap
默认按照插入顺序排序,不支持自定义排序;TreeMap
,如果元素是基本数据类型或其包装类型,则默认按升序排序;如果是元素是复杂对象类型,则需要元素实现Comparable
接口中的CompareTo
方法;
yumomode:博主水平有限,文中若有错误之处,恳请博友指正,感激不尽!!!