Java 第二个模块 集合面试题

这篇博客详细探讨了Java集合框架中的核心概念,包括ArrayList、LinkedList、HashSet、HashMap与Hashtable的区别,以及它们的实现原理。此外,还涉及线程安全、迭代器、并发集合和面试中常见的HashMap工作原理、红黑树等高级话题。了解这些知识点对于提升Java后端开发者在面试中的竞争力至关重要。
摘要由CSDN通过智能技术生成

集合重要面试题

1.java 容器都有哪些?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2DFh2S0V-1638496085651)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211129145218109.png)]

2.Collection 和 Collections 有什么区别?

Collection是存储数据的一个容器,是一个接口,由子类set或者list集合来实现
Collections是一个工具类,里面有许多的静态方法,对集合进行操作

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

​           [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uQRhnqyc-1638496085653)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211129145254586.png)]

4.HashMap 和 Hashtable 有什么区别?

1.HashMap不是安全的,Hashtable是安全的
2.HashMap效率比Hashtable的效率快
3.HashMap的键和值可以有null值,而Hashtable不可以有null

5.如何决定使用 HashMap 还是 TreeMap?

1HashMap使用的是数组和链表存储,在添加删除的操作时,多使用HashMap
2TreeMap是使用的树存储,对有序的key集合便利的时候使用TreeMap

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

1.HashMap的底层使用的是hash表,提供映射操作,不能保证集合的顺序性,可使用null值和null2.使用数组和链表存储(链表散列),jdk8之后(数组+链表+红黑树)
3.当添加元素时,key的hashcode会重新计算hash值,根据hash值得到这个元素在数组中的下标位置,如果该位置有其他元素,则以链表形式存储,新加入的放在链头,最先加入的放入链尾。如果数组中该位置没有其他元素,添加的元素就直接放在该位置上
4.JDK8之后,当链表索引位置的节点数超过8个(阈值8)之后,数组长度大于等于64,就会触发红黑树节点,进行扩容。就会使用红黑树来存储来提高查询效率。从原来的时间复杂度O(n)变为O(logn)
5.默认初始容量是16,容量必须是2N次方,例如传 9,容量为16

7. 说一下 HashSet 的实现原理?

HashSet底层由hashMap来实现的
HashSet的值存放在hashMap的key上
HashMap的value统一为PRESENT

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

List:有序且可重复的(调用对象的equals方法进行比较)
	ArrayList:增删慢,查询快(底层用数组实现)支持随机访问 查询时间复杂度O1LinkedList:增删快,查询慢(双向循环链表实现) 不支持随机访问 查询时间复杂度o(n)

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

List -> 数组:调用ArrayList中的toArray()方法
数组 -> List:调用Arrays中的asList方法(数组的长度不可以被改变)

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

Vector:底层用数组实现,线程安全,效率低
ArrayList:增删慢,查询快(底层用数组实现)

11.Array 和 ArrayList 有何区别?

Array可以容纳基本类型和对象,而ArrayList只能容纳对象
Array指定大小,而ArrayList的大小是固定的
Array没有ArrayList的一些功能(addAll/removeAll/irerator)

12.在 Queue 中 poll()和 remove()有什么区别?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

抹泪的知更鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值