集合体系
Collection(单列)
List(有序,可反复)
ArrayList: 底层数据结构是数组,查询快。增删慢。线程不同步。效率高。LinkedList:底层数据结构是链表。查询慢。增删快。
线程不同步,效率高。
Vector: 底层数据结构是数组。查询快。增删慢。线程同步,效率低。
Set(无序,唯一)
HashSet:底层数据结构是哈希表。线程不同步。效率高。 怎么保证唯一性的呢?它依赖两个方法:hashCode()和equals()顺序:首先推断hashCode()值是否同样。同:继续走equals()。看返回值假设true:就不加入到集合。假设false:就加入到集合。不同:就加入到集合。
TreeSet:底层数据结构是二叉树。线程不同步,效率高。
怎么保证唯一性的呢?是依据返回是否是0。
怎么保证排序的呢?两种方式
一、自然排序(元素具备比較性) 实现Comparable接口
二、比較器排序(集合具备比較性) 实现Comparator接口
Map(双列 底层结构是针对键有效。跟值无关)
HashMap:底层数据结构是哈希表。线程不同步,效率高。
怎么保证唯一性的呢?
它依赖两个方法:hashCode()和equals()顺序:首先推断hashCode()值是否同样。
同:继续走equals(),看返回值假设true:就不加入到集合。假设false:就加入到集合。不同:就加入到集合。
Hashtable:底层数据结构是哈希表。线程安全,效率低。
怎么保证唯一性的呢?
它依赖两个方法:hashCode()和equals()顺序:首先推断hashCode()值是否同样。同:继续走equals(),看返回值假设true:就不加入到集合。假设false:就加入到集合。不同:就加入到集合。
TreeMap:底层数据结构是二叉树。线程不同步,效率高。
怎么保证唯一性的呢?
是依据返回是否是0。
怎么保证排序的呢?
两种方式自然排序(元素具备比較性)实现Comparable接口比較器排序(集合具备比較性)实现Comparator接口
集合常见应用功能
加入功能。推断功能,删除功能,获取功能,长度功能
遍历方式
List Set迭代器
IteratorListIterator
Map迭代器
有俩种选择一种去用就可以。(妻子找丈夫)键和值(结婚证找妻子丈夫)键和值映射关系
Map的两种典型遍历方式:
entrySet() 与 keySet()。entrySet的遍历方式要比keySet()高很多,由于欲取得相同的key-value对。keySet()相当于遍历了两次Map。
集合那么多什么时候该用谁?
是否键值对?
是:Map是否对键排序?是:TreeMap否:HashMap不懂的情况下。使用HashMap。
否:Collection
是否唯一?是:Set是否对元素进行排序?是:TreeSet是否须要有序?是:LinkedSet否:HashSet
不懂的情况下,使用HashSet否:List是否要安全?是:Vector(真正开发中也不用)否:ArrayList。LinkedList
注意:查询多:ArrayList
增删多:LinkedList
不懂的情况下,使用ArrayList