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:博主水平有限,文中若有错误之处,恳请博友指正,感激不尽!!!