一 List三个子类的区别和应用场景
Vector:底层是数组,查询快,增删慢数组
Arraylist:底层是数组,查询块,增删慢安全
LinkedList:底层是链表,查询慢,增删快数据结构
效率:性能
Vector:线程同步(安全),效率低线程
ArrayList:线程不一样步(不安全),效率高对象
它用来代替Vector的。排序
LinkedList:线程不安全,效率高继承
二 Set集合的三个子类:
- HashSet集合
- 底层实际上是包装了一个HashMap实现的
- 底层数据结构是数组+链表 + 红黑树
- 具备比较好的读取和查找性能, 能够有null 值
- 经过equals和HashCode来判断两个元素是否相等
- 非线程安全
- LinkedHashSet集合
- 继承HashSet,本质是LinkedHashMap实现
- 底层数据结构由哈希表(是一个元素为链表的数组)和双向链表组成。
- 有序的,根据HashCode的值来决定元素的存储位置,同时使用一个链表来维护元素的插入顺序
- 非线程安全,能够有null 值
- TreeSet集合
- 是一种排序的Set集合,实现了SortedSet接口,底层是用TreeMap实现的,本质上是一个红黑树原理
- 排序分两种:天然排序(存储元素实现Comparable接口)和定制排序(建立TreeSet时,传递一个本身实现的Comparator对象)
- 正常状况下不能有null值,能够重写Comparable接口 局能够有null值了。
- 集合元素必须是枚举类型,不然会抛出异常
- EnumSet集合也是有序的,其顺序就是Enum类内元素定义的顺序
- · EnumSet存取的速度很是快,批量操做的速度也很快