Java容器高频面试题汇总
一、List与Set区别
List:有序,按对象进⼊的顺序保存对象,可重复,允许多个Null元素对象。可以使用Iterator取出 所有元素,在逐⼀遍历(使用迭代器进行访问);还可以使用get(int index)获取指定下标的元素(使用下标进行访问,即随机访问)。
Set:无序,不可重复,最多允许有⼀个Null元素对象,取元素时只能用Iterator接口取得所有元 素,在逐⼀遍历各个元素。
二、ArrayList和LinkedList区别
(1)首先,他们的底层数据结构不同,ArrayList底层是基于动态数组实现的,LinkedList底层是基于链表实现的。所以ArrayList要求连续内存存储,LinkedList可以分散存储在内存中。
(2)由于底层数据结构不同,他们所适用的场景也不同,ArrayList更适合随机查找;LinkedList更适合删除和添加,但是不适合查询,遍历只能使用Iterator。
(3)另外ArrayList和LinkedList都实现了List接口,但是LinkedList还额外实现了Deque接口,所以LinkedList还可以当做队列来使用。
(4)关于性能方面也不是绝对的!LinkedList虽然在插入、删除的时候相较于ArrayList而言节约了移动元素的时间,但是增加了申请、释放node的时间。并且ArrayList如果尾插法效率是可以超过LinkedList的!
三、
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)