目录
2. Collection 和 Collections 有什么区别?
4.ArrayList 和 LinkedList 的区别是什么?
11.比较HashSet、LinkedHashSet、TreeSet三者的异同?
14.HashMap & ConcurrentHashMap的区别?
1.java 容器都有哪些?
2. Collection 和 Collections 有什么区别?
答:Collection是一个接口,Collections是集合类的一个工具类,其中提供了一系列静态方法,用于对集合中元素进行排序、搜索、以及线程安全等各种操作。
3. List、Set、Map 之间的区别是什么?
答:List存储的元素是有序可重复的,Set存储的元素是无序不可重复的,Map使用键值对存储,key是无序的、不可重复的,value是无序的、可重复的。
4.ArrayList 和 LinkedList 的区别是什么?
答: ArrayList底层的数据结构是数组,支持随机访问,而LinkedList底层数据结构是双向循环链表,不支持随机访问。使用下标访问一个元素,ArrayList的时间复杂度是O(1),而LinkedList是O(n)。
5.说一说ArrayList的扩容机制吧?
答:jdk7,底层创建了长度是10的Object[]数组,如果添加导致数组容量不够,则扩容,扩容为原来的1.5倍,同时将原数组中的数据复制到新的数组中。
jdk8,刚开始调用构造方法时并没有创造长度为10的Object[]数组,而是第一次调用add()时,底层才创建了长度为10的数组,
6.ArrayList 和 Vector 的区别是什么?
答:ArrayList是List接口的主要实现类,底层使用Object数组存储,适用于频繁的查找工作,线程不安全。Vector是List的古老实现类,底层使用Object数组存储,线程安全的。
jdk7和jdk8中通过Vector()构造器创建对象时,底层都创建了长度为10的数组,在扩容方面,默认扩容为原来数组长度的2倍。
7.无序性和不可重复性的含义是什么?
答: 无序性不等于随机性,是指存储的数据在底层数组中并非按照数组索引的顺序添加,而是根据数据的哈希值决定的。不可重复性是指添加的元素按照equals()判断时,返回false,需要同
时重写equals()方法和HashCode()方法。