Collection是List和Set接口的父接口;ArrayList和LinkedList是List的实现类;HashSet和TreeSet是Set的实现类;
LinkedHashSet是HashSet的子类。HashMap和TreeMap是Map的实现类;LinkedHashMap是HashMap的子类
图中:虚线框中为接口,实线框中为类。
List
1、对于随机访问get和set,ArrayList优于LinkedList,因为LinkedList要移动指针。
对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。
Set
1.HashSet的顺序是不确定的,此类允许使用 null 元素,不允许集合添加重复元素,如果添加重复元素将会覆盖之前的元素。
2.TreeSet集合内部进行排序使用.
Map
1. Map的实现类有HashMap,LinkedHashMap,TreeMap
2. HashMap是有无序的,LinkedHashMap和TreeMap都是有序的(LinkedHashMap记录了添加数据的顺序;TreeMap默认是自然升序)
3. LinkedHashMap底层存储结构是哈希表+链表,链表记录了添加数据的顺序
4. TreeMap底层存储结构是二叉树,二叉树的中序遍历保证了数据的有序性.
TreeMap通过红黑树实现Map接口的类,key不可以为null,会报NullPointerException异常,value可以为null。
5. LinkedHashMap有序性能比较高,因为底层数据存储结构采用的哈希表
HashMap和Hashtable的区别和联系
相同点:
实现原理相同,功能相同,底层都是哈希表结构,查询速度快,在很多情况下可以互用
不同点:
1、Hashtable是早期提供的接口,HashMap是新版JDK提供的接口
2、Hashtable继承Dictionary类,HashMap实现Map接口
3、Hashtable线程安全,HashMap线程非安全
4、Hashtable不允许null值,HashMap允许null值