一些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/迭代器弱一致性:对于读线程,会出现写线程操作结束后,读线程还是读取到写之前的数组

相关推荐
Lilith的AI学习日记几秒前
什么是预训练?深入解读大模型AI的“高考集训”
开发语言·人工智能·深度学习·神经网络·机器学习·ai编程
程序员岳焱31 分钟前
深度剖析:Spring AI 与 LangChain4j,谁才是 Java 程序员的 AI 开发利器?
java·人工智能·后端
wangjinjin18032 分钟前
Python Excel 文件处理:openpyxl 与 pandas 库完全指南
开发语言·python
愚润求学32 分钟前
【C++】类型转换
开发语言·c++
都叫我大帅哥39 分钟前
AQS(AbstractQueuedSynchronizer)深度解剖:从“奶茶店排队”到源码级设计哲学
java
斯奕sky_small-BAD44 分钟前
C++ if语句完全指南:从基础到工程实践
java·开发语言·php
云之渺1 小时前
125java
java
都叫我大帅哥1 小时前
Java ReentrantLock:从“舔狗式等待”到源码级征服指南
java
程序员岳焱1 小时前
Java 高级泛型实战:8 个场景化编程技巧
java·后端·编程语言
Humbunklung1 小时前
Rust Floem UI 框架使用简介
开发语言·ui·rust