1、Collection :(单列集合)
List :(有序,可重复)
ArrayList:数组实现,查找快
LinkedList:链表实现,增删快
Vector:线程安全的ArrayList,效率低
Set :(无序,不重复)
HashSet:速度快,使用哈希算法去重复,有存储对象时,
先调用hashCode()计算哈希值。查找是否有哈希值相同的对象,
如果没有,则存入,如果有,就和哈希值一样的对象进行equals()比较。
比较结果为false则存入,true就不存。
TreeSet:可排序,使用二叉树算法去重复和排序,
|————————————-| 可以用两种方式指定比较的算法:
| 如果没传比较器也没实现 | a)自然顺序: 按照类上实现的Comparable接口
| 接口,则会抛一个异常 |————-> (使用时必须重 中的compareTo()方法的顺序来排序。
| (ClassCastException) | 写接口方法)
| 因为在TreeSet中会将存储 |
| 的对象转为Comparable | b)比较器顺序:使用构造函数中传入的Comparator对象
| 来使用起compareTo()方法 | 的compare()方法的顺序来排序。
|-------------------------|
LinkedHashSet:是HashSet的子类。速度快(只比HashSet慢一点点),
可以保留存储顺序,原理与HashSet相同。
|----------------------------------------------------------------------|
| Set中,如果有重复元素,是不会再往Set中存储的。 |
| Map中,如果有重复元素,则会用后来的元素覆盖之前的元素(键不存,值覆盖)|
|----------------------------------------------------------------------|
2、Map:(键值对,键唯一,可根据键查找值)
HashMap:速度快,使用哈希算法对键去重复。哈HashSet原理相同。
TreeMap:可排序,使用二叉树算法对键去重复。和Tree原理相同。
LinkedHashMap:速度快,可保留存储顺序。是HashMap的子类,原理与HashMap相同。
HashTable:线程安全的HashMap,效率低, 不允许null键和null值。
properties:Hashtable的子类,通常用来操作配置文件,键和值都是String。