Java容器常见面试题汇总

目录

1.java 容器都有哪些?

2. Collection 和 Collections 有什么区别?

3. List、Set、Map 之间的区别是什么?

4.ArrayList 和 LinkedList 的区别是什么?

5.说一说ArrayList的扩容机制吧?

6.ArrayList 和 Vector 的区别是什么?

7.无序性和不可重复性的含义是什么?

8. 说一下 HashMap 的实现原理?

9.如何实现数组和 List 之间的转换?

10.HashMap 和 Hashtable 有什么区别?

11.比较HashSet、LinkedHashSet、TreeSet三者的异同?

12.Comparable和Comparator的区别?

13.ConcurrentHashMap?

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()方法。

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值