java中的集合体系
一、Collection(单列)
1、List(有序,可重复)
1)、ArrayList
底层数据结构是数组,查询快,增删慢。
线程不安全,效率高。
2)、Vector
底层数据结构是数组,查询快,增删慢。
线程安全,效率低。
3)、LinkedList
底层数据结构是链表,查询慢,增删快。
线程不安全,效率高。
2、Set(可能无序,肯定唯一)
1)、HashSet
底层数据结构是哈希表。
线程不安全,效率高。
怎么保证唯一性的呢?
它依赖两个方法:hashCode()和equals()
顺序:
首先判断hashCode()值是否相同。
相同:继续走equals(),看返回值
如果true:就不添加到集合。
如果false:就添加到集合。
不同:就添加到集合。
2)、TreeSet
底层数据结构是二叉树。
线程不安全,效率高。
怎么保证唯一性的呢?是根据返回是否是0。
怎么保证排序的呢?两种方式
自然排序(元素具备比较性)
实现Comparable接口
比较器排序(集合具备比较性)
实现Comparator接口
二、Map(双列 底层结构是针对键有效,跟值无关)
1、HashMap
底层数据结构是哈希表。
线程不安全,效率高。允许null键和值
怎么保证唯一性的呢?
它依赖两个方法:hashCode()和equals()
顺序:
首先判断hashCode()值是否相同。
同:继续走equals(),看返回值
如果true:就不添加到集合。
如果false:就添加到集合。
不同:就添加到集合。
2、Hashtable
底层数据结构是哈希表。
线程安全,效率低。不允许null键和值
怎么保证唯一性的呢?
它依赖两个方法:hashCode()和equals()
顺序:
首先判断hashCode()值是否相同。
同:继续走equals(),看返回值
如果true:就不添加到集合。
如果false:就添加到集合。
不同:就添加到集合。
3、TreeMap
底层数据结构是二叉树。
线程不安全,效率高。
怎么保证唯一性的呢?是根据返回是否是0。
怎么保证排序的呢?两种方式
自然排序(元素具备比较性)
实现Comparable接口
比较器排序(集合具备比较性)
实现Comparator接口