一些Java集合面试题

1.总体讲一下Java集合

Java集合主要是由两大接口派生而来。一个是Collection接口,主要用于存放单一元素,主要分成Set,List和Queue三大类;另一个是Map接口,主要用于存放键值对元素,主要实现类就是HashMap、LinkedHashMap、TreeMap。

2.List有哪些具体的实现类?各个数据结构是怎样的?

List主要是ArrayList和LinkedList,ArrayList底层是object数组,ArrayList基于动态数组实现,它允许通过索引快速访问元素,查询时间复杂度:O(1),如果查询的是索引位置的元素。插入元素效率比较慢,因为涉及到前后元素的位移。LinkedList底层是双向链表,双向链表在首尾插入删除元素都比较方便,时间复杂度是O(1),检索效率比较慢,因为要从首尾将指针移动到相应的位置,时间复杂度是O(n)。

3.介绍CopyOnWriteArrayList

底层实现采用了写入时拷贝的思想,增删改操作会将底层数组拷贝一份,更改操作在新数组上执行,实现了并发读,读写分离。

写操作里面利用synchronized保证写写互斥,读操作foreach没有加锁,适合读多写少的场景

get/迭代器弱一致性:对于读线程,会出现写线程操作结束后,读线程还是读取到写之前的数组

相关推荐
llwszx1 小时前
深入理解Java锁原理(一):偏向锁的设计原理与性能优化
java·spring··偏向锁
脑袋大大的1 小时前
JavaScript 性能优化实战:减少 DOM 操作引发的重排与重绘
开发语言·javascript·性能优化
云泽野1 小时前
【Java|集合类】list遍历的6种方式
java·python·list
二进制person2 小时前
Java SE--方法的使用
java·开发语言·算法
OneQ6662 小时前
C++讲解---创建日期类
开发语言·c++·算法
小阳拱白菜3 小时前
java异常学习
java
码农不惑3 小时前
2025.06.27-14.44 C语言开发:Onvif(二)
c语言·开发语言
FrankYoou4 小时前
Jenkins 与 GitLab CI/CD 的核心对比
java·docker
麦兜*4 小时前
Spring Boot启动优化7板斧(延迟初始化、组件扫描精准打击、JVM参数调优):砍掉70%启动时间的魔鬼实践
java·jvm·spring boot·后端·spring·spring cloud·系统架构
Coding小公仔4 小时前
C++ bitset 模板类
开发语言·c++