/*
Collection(接口)
-- List(接口) 元素可以重复,有序(存储和取出顺序一致)
--ArrayList
底层数据结构是数组,查询快增删慢
线程不安全的,效率高。
--LinkedList
底层数据结构是链表,查询慢,增删快
线程不安全的,效率高。
--Vector
底层数据结构是数组,查询快,增删慢
线程安全的,效率低(即使是安全的,我们也不用它,后面有更好的集合替代)
-- Set(接口) 元素唯一,无序
--HashSet
底层数据结构是哈希表,元素唯一是由hashCode和equals方法同时保证的
--LinkedHashSet extends HashSet
底层数据结构是哈希表和双链表,保证了元素唯一和有序
--TreeSet
底层数据结构是红黑树,自平衡二叉树
根据构造方法的不同提供两种排序实现方式:
1、无参构造--自然排序(要求数据类型的类要实现Comparable接口,实现compareTo方法)
2、有参构造--参数是实现了Comparator接口并且重写了compare方法的对象
a: 自定义一个类实现
b: 匿名内部类的形式实现
将来开发的时候,我们应该用谁呢?根据以下几点考虑出发
1、元素需要唯一吗?
需要:优先考虑HashSet
不需要:优先考虑ArrayList
2、需要有序吗?
优先考虑ArrayList
如果排序的规则是自定义的,优先考虑TreeSet
如果说,开发的要求没有那么高也没有上面的要求,你就用ArrayList
Map(接口)元素是由key和value键值对组成,key是唯一的,value是可以重复的
--HashMap
当引用数据类型作为key的时候,该类型必须重写hashCode()和equals()方法,保证唯一
--LinkedHashMap
哈希表保证唯一(键唯一)
链表保证有序(存储和取出顺序一致)
--TreeMap
当引用数据类型作为key的时候,有两种排序方式
自然排序
比较器排序(推荐)
HashMap与Hashtable的区别:
1、HashMap中的key和value允许为null值,而Hashtable不允许
2、Hashtable是线程安全的,HashMap是线程不安全的
*/