都是Collection接口的子接口
从三个方面来区别:
1.有序性:List按照插入的顺序来排序 Set插入和取出的顺序不同
2.唯一性:List可以重复 Set元素唯一
3.获取元素: List可以通过索引直接操作元素 Set不能根据索引获取元素
List分为:ArrayList ,Vector,LinkedList
1.ArrayList 底层数据结构是数据,查询块,增删慢;线程不安全,效率高
2.Vector 底层数据结构是数据,查询块,增删慢;线程安全,效率低
3.LinkedList 底层数据结构是链表 ,查询慢 ,增删快;线程不安全,效率高
ArrayList和LinkedList的区别和举例:https://blog.csdn.net/qingxu1234/article/details/81231453
Set:HashSet,TreeSet,LinkedHashSet
实际上Set就是Collection,只 是行为不同。(这是继承与多态思想的典型应用:表现不同的行为。)
1.HashSet 底层数据结构是哈希表(是一个元素是链表的数组),哈希表底层依赖两个方法:hashCode()和equals()
2.TreeSet 底层数据结构是红黑树 两种方式排序:自然排序和比较器排序
3.LinkedHashSet 由链表保证元素有序 由哈希表保证元素唯一