1:Collection集合体系
Collection(add,remove,contains,size,iterator)
|--List(有序,可重复 add(index),get(index),set(index),remove(index))
|--ArrayList
底层数据结构是数组,查询快,增删慢。
线程不安全,效率高。
|--Vector
底层数据结构是数组,查询快,增删慢。
线程安全,效率低。
|--LinkedList
底层数据结构是链表,查询慢,增删快。
线程不安全,效率高。
|--Set(无序,唯一)
|--HashSet
底层数据结构是哈希表。
如何保证元素唯一性呢?
它依赖两个方法,hashCode()和equals()方法。
首先根据hashCode()进行比较:
相同:继续,equals()方法
如果返回true,不添加
如果返回false,添加
不相同:直接添加到集合中。
|--LinkedHashSet
底层数据结构是哈希表和链表。
哈希表保证元素唯一。
链表保证元素有序。
|--TreeSet
底层数据结构是二叉树。
如何保证元素唯一性呢?
根据自然排序或比较器返回的最终结果是不是0来确定元素是否重复。
如果是0,不添加。否则,添加。
怎么实现排序的呢?
方式1:让元素本身具备比较性
实现Comparable接口
方式2:让集合具备比较性
实现Comparator接口
比较接口:
Comparable:自然排序比较,被元素本身实现。
Comparator:比较器接口,用于集合实现。
2:Map
(1)Map(键值对形式,键唯一,它的数据结构是用于保证键的)
|--HashMap
底层数据结构是哈希表。
键唯一?
跟hashCode()和equals()方法有关。
|--Hashtable
底层数据结构是哈希表。
|--TreeMap
底层数据结构是二叉树。
键唯一,排序?
跟自然排序或者比较器有关。
(2)Map和Collection的区别?
Map:键值对形式,键唯一。可以看成是夫妻对。
Collection:单一元素形式,它的儿子Set的元素是唯一。可以看成是单身汉。
(3)HashMap和Hashtable区别?
HashMap:键和值都可以为null,线程不安全。
Hashtable:键和值都不可以为null,线程安全。
(4)Collection和Collections的区别?
Collection:是Collection集合的顶层接口,定义了共性方法。
Collections:是对Collection集合操作的工具类,比如说:排序,查找。