List
一、LinkList:是List接口的一种实现,基于链表的数据结构,地址不连续,查询和删除比较快,线程非安全 二、ArrayList:List接口的一种实现,基于动态数组的数据结构,地址连续,查询效率高,线程非安全 三、Vector:与ArrayList一样,也是通过数组实现的,不同的是它支持线程的同步,是线程安全的。(即某一时刻只有一个线程能够写Vector,避免多线程同时写而引起的不一致性,但实现同步需要很高的花费,因此,访问它比访问ArrayList慢。) 常用方法
Set
一、TreeSet:底层是红黑树,且元素自动排序,靠自然排序比较器保证有序。根据比较的返回值是否是0来保证元素的唯一性,不允许放入null值 。适用于排序场景 二、HashSet:底层是哈希表,存储数据时会调用HashCode方法,得到Hash值,以此决定值的存放位置。 线程非安全:即使存储的值相同,但是Hash值不同,依旧会存放在不同的位置。 唯一性:元素重写hashCode方法和equals方法来判断两个元素是否相等,如果相等则覆盖原来的元素 三、LinkedHashSet 链表维护元素的插入顺序,底层采用链表和哈希表,链表保证元素顺序和存储顺序一致,哈希表保证元素的唯一性。线程不安全。
Map
一、HashMap:基于Hash桶,通过hash函数计算Hash地址,需要复写equals和hashcode方法,线程非安全,适用于Map中插入,删除和定位元素。 二、TreeMap:基于红黑树实现,适用于按自然顺序或自定义顺序遍历键(key),线程非安全。
|