1.List、Set、Map的区别
List集合有序、可重复的单例集合。
Set集合无序、不可重复的单例集合。
Map集合有序、k不可重复,v可重复的双例集合。
List、Set和Map都是Java中Collection接口的实现类
2.List、Set、Map常用集合有哪些?
List:
vector: 使用了synchronized来保证线程安全,所以效率较慢,底层是数组,使用ArrayList替代。
ArrayList:数组都是连续的地址,所以查询比较快。增删比较慢, 线程不安全,底层是数组。
LinkedList: 查询慢,增删快;线程不安全,底层是链表。
Set:
HashSet:底层是哈希表(数组+链表或数组+红黑树),在链表长度大于8时转为红黑树,在红黑树节点小于6时转为链表。
TreeSet:底层是红黑树结构,就是TreeMap实现,可以实现有序的集合。String和Integer可以根据值进行排序。如果是对象需要实现Comparator接口,重写compareTo()方法制定比较规则。
LinkedHashSet:实现了HashSet,多一条链表来记录位置,所以是有序的。
Map:
TreeMap: 底层是红黑树,key可以按顺序排列。
HashMap: 底层是哈希表,可以很快的储存和检索,无序,大量迭代情况不佳。
LinkedHashMap: 底层是哈希表+链表,有序,大量迭代情况佳。