---|Collection:单列集合
--------|List:有存储顺序,可重复
-------------|ArrayList:数组实现,查找快,增删慢
由于是数组实现,在增和删的时候会牵扯到数组增容、以及拷贝元素,所以慢。
数组是可以直接按索引查找,所以查找时较快
-------------|LinkedList:链表实现,增删快,查找慢
由于链表实现,增加时只要让前一个元素记住自己就可以,删除时让前一个元素记住后一个元素,
后一个元素记住前一个元素. 这样的增删效率较高但查询时需要一个一个的遍历,所以效率较低
-------------|Vector:和ArrayList原理相同,但线程安全,效率略低
--------|Set:无存储顺序,不可重复
-------------|HashSet:线程不安全,存取速度快。底层用哈希表实现。
如果两个对象的hashCode相同,那么元素重复。
-------------|TreeSet:红-黑树的数据结构,默认对元素进行自然排序(String)。
如果在比较的时候两个对象返回值为0,那么元素重复。
---| Map:双列集合
键值对,将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。
---------|HashMap:底层是哈希表数据结构,线程是不同步的,可以存入null键,null值。
要保证键的唯一性,需要重写hashCode方法和equals方法。
---------|TreeMap:底层是红-黑树数据结构。可以对map集合中的键进行排序。
需要使用Comparable或者Comparator进行比较排序,来判断键的唯一性。
---------|HashTable:底层是哈希表数据结构,线程是同步的,不可以存入null键,null值。效率较低,被HashMap替代。
每一个容器对数据的存储方式不同,这种存储方式称之为数据结构(data structure)





