JAVA集合源码学习(概要)
集合的两大根接口:Collection和Map
我主要了解的集合有如下几种:
- List:有序的集合
- ArrayList(底层数据结构是数组,查询快,增删慢;线程不安全,效率高)
- LinkedList(底层数据结构是链表,查询慢,增删快;线程不安全,效率高)
- Set:无序的集合
- HashSet(底层数据结构是哈希表)
- TreeSet(底层数据结构是红黑树(是一个自平衡的二叉树))
- LinkedHashSet(底层数据结构由链表和哈希表组成)
- Map:键值对集合
- HashMap(底层数据结构是哈希表。线程不安全,效率高)
- TreeMap(底层数据结构是红黑树。(是一种自平衡的二叉树))
- LinkedHashMap(底层数据结构由链表和哈希表组成。)
到底使用那种集合(一般情况)
看需求。
是否是键值对象形式:
是:Map
键是否需要排序:
是:TreeMap
否:HashMap
不知道,就使用HashMap。
否:Collection
元素是否唯一:
是:Set
元素是否需要排序:
是:TreeSet
否:HashSet
不知道,就使用HashSet
否:List
要安全吗:
是:
否:ArrayList或者LinkedList
增删多:LinkedList
查询多:ArrayList
不知道,就使用ArrayList
不知道,就使用ArrayList
Java小白初次总结,如有不对还请指点!