常用集合之间的关系:
1:list的子类 :list集合包含重复元素,并且有序(存储顺序和取出顺序一致);
ArrayList: 底层是数组,线程不安全,查询快,增删慢,效率高;
vector: 底层是数组,线程安全,查询快,增删慢,效率低;
linkedList: 底层是链表,线程不安全,查询慢,增删快,效率高;
2:set类集合: set集合不包含重复,具有唯一性;
HashSet: 唯一性;
LinkedHashSet : 底层是hash表(唯一性)和链表(存放和取出有序)组成,所以具有唯一性和有序性;
TreeSet : 唯一性,集合内部有两种排序方式:自然排序 和 比较器排序;
3: Map类集合: 键值对集合,键具有唯一性;
HashMap: 存储无序,键具有唯一性;
TreeMap: 存储为自然排序,键具有唯一性;
LinkedHashMap: 存放和取出有序,键具有唯一性;
面试相关:
1:HashMap与Hashtable的区别:
HashMap: 线程不安全,允许null键和null值;
Hashtable: 线程安全,不允许null键和null值;
2:list、set、Map是否都是继承map ??
否,list、set继承的collection接口,而map接口本身就是一个顶层接口;
3:collection与collections的区别:
collection : 是单列集合的顶层接口,有子接口list、set;
collections: 是针对集合操作的工具类,像常用的:对集合进行排序和二分查找;
collections的常用方法:
collections里面都是静态方法:
collections.sort(List<> list) :集合的自然排序;
collections.binarySearch(List<> list ,T key) : 集合的二分查找;
collections.max() : 获取最大值;
collections .reverse() : 元素反转;
collections .shuffle() : 元素位置随机置换;
4:开发中如何使用线程安全的集合?
List<Object> objects = Collections.synchronizedList(new ArrayList<>());