文章目录
集合体系图:
总结:
Connection接口:
— List 有序,可重复
1.ArrayList
优点: 底层数据结构是数组,查询快,增删慢。
缺点: 线程不安全,效率高
2.Vector
优点: 底层数据结构是数组,查询快,增删慢。
缺点: 线程安全,效率低
3.LinkedList
优点: 底层数据结构是链表,查询慢,增删快。
缺点: 线程不安全,效率高
—Set 无序,唯一
1.HashSet
底层数据结构是哈希表。(无序,唯一)
如何来保证元素唯一性?
1.依赖两个方法:hashCode()和equals()
2.LinkedHashSet
底层数据结构是链表和哈希表。(FIFO插入有序,唯一)
1.由链表保证元素有序
2.由哈希表保证元素唯一
3.TreeSet
底层数据结构是红黑树。(唯一,有序)
-
如何保证元素排序的呢?
自然排序
比较器排序 -
如何保证元素唯一性的呢?
根据比较的返回值是否是0来决定
针对Collection集合如何使用:
要求唯一:set集合
1.如果要求唯一,要求有顺序,则使用TreeSet或者LinkedHashSet
2.如果要求唯一,不要求有顺序,使用HashSet
不要求唯一:List集合
1.要求安全:Vector
2.不要求安全:ArrayList或者LinkedList
如果你知道是Collection集合,但是不知道使用谁,就用ArrayList。
如果你知道用集合,就用ArrayList。
Map集合:
TreeSet的主要功能用于排序(内部排序:自然排序和比较器排序)
LinkedHashSet的主要用于有序的集合(先进先出) :保证按照插入顺序排序
HashSet只是通用的存储数据的集合
TreeSet, LinkedHashSet and HashSet 在java中都是实现Set的数据结构
Hashtable不允许null值,HashMap允许null值(key和value都允许)
集合遍历:
List 集合:
1)迭代器
2)普通for
3)增强for
Set 集合:
1)迭代器
2)增强for
Map集合:
1)根据键获取值:keySet()和get(Object key)
2)根据键值对对象获取键和值:entrySet()
Entry 接口中的方法:getKey()和getValue()
参考文章:Java集合中List,Set以及Map等集合体系详解(史上最全)