List接口和Set接口是Collection接口下的子接口,其中Collection是单列。
来说Collection接口下的两个子接口List和Set:
List和Set相比List有序且可重复,Set不可重复。
List接口下有三个重要的实现类:ArrayList、LinkedList、Vector。
ArrayList:底层是数组,数组有索引因此ArrayList理论上来说查找快。
LinkedList:底层是链表,因此理论上来说LinkedList增删快。
Vector:基于数组,线程安全,但是效率低。
Set接口下有三个常见的实现类:HashSet、(LinkedHashSet)、TreeSet。
HashSet:底层是哈希表,无序且不可重复,值得注意的是HashSet可理解为简化版的HashMap,因为HashSet底层是HashMap,在存储时值转化为Hash存在Map键中,值则new 了一个Object,如下图。
LinkedHashSet:其继承了HashSet,不同于HashSet的是LinkeHashSet是有序的,其底层是哈希加链表结构。
TreeSet:底层是红黑树,TreeSet也是有序的且可自定义排序。