java集合常见面试题

本文总结了Java集合面试中常见的问题,包括Collection、List、Set、Queue和Map接口的特性及子类,以及Array与ArrayList的对比。还讨论了面试中可能遇到的额外问题,如List、Set、Map的区别以及HashMap的工作原理。
摘要由CSDN通过智能技术生成

最近参加了几次java开发面试,有好几个面试官都问了一些基础的问题。我总结了几点,也可以在项目中进行运用

首先我们要知道集合我们常见有五个接口,一个数组

接口一:collection

第一,我们要知道collection的父类是iterable接口,也就是我们常说的的迭代器。

 关于实现iterable接口的类 ,这里有两个说明:
	 	1、能够增强for循环,例如我们的forEach循环
		2、必须要提供一个返回值为iterable的iterable()方法。
 3、常用方法:
		 ①hashNext()  :是否存在下一项			
		 ②next()  :获取下一项
		 ③remove(Oject)  :移除

接下就是collection本身的几个方法

 ①add(E):从集合中添加某项
 ②contains(Object):判读是否包含某项
 ③iterator() :集合遍历
 ④remove():移除(重点:关于此方法与其父类接口【iterable】中remove(Object)的区别: )

最后总结:

collection接口remove()方法与iterable接口remove()方法的区别?
1、性能方法:
	collection接口remove()方法采用链表结构,删除某项时有一个遍历集合过程,效率比较低
	iterable接口remove()方法使用时会结合其next()方法找到下一项,然后直接删除,效率更高

2、容错方面:
	collection接口remove()方法使用后, 集合对象的个数发生改变,当使用iterator进行遍历时,集合的对象与iterator内部对象的个数不一致会出现异常
	iterable接口的话,在进行iterator遍历时,原来集合对象个数与iterator内部对象个数一致,不会报错

接口二:List接口

对于List的话,其特点是:可重复,有顺序
其子类有两个:

①ArrayList(数组结构):get/set速度快,用于查询
②LinkedList(链表结构):get/set速度慢,用于增删 

那么对于List的话,要注意ArrayList于LinkedList之间的区别?

接口三:set接口

set接口的特点与List接口的特点相反:不重复,无顺序
子类:

①HashSet:常用,速度快,顺序不明显,可有一个null值
②TreeSet:按照比较结果顺序保存对象 
③LinkedHashSet:按照插入顺序保存结果 

在这里,我们要注意这三种集合的适用的场景

接口四:queue接口

说到queue(管道),我们要联想到message(通信)、Looper(循环)、handler(处理器)
结合项目的话,我们在网上浏览网页的时候,会有两个线程:

主线程:用于UI(页面数据展示)
子线程:负责访问数据库
在子线程访问数据库时:Looper(循环)会将message(通信)会依次添加到queue(管道),然后queue会将数据依次送到子线程中,
由于有可能会发生子线程与主线程发生矛盾的情况,handler(处理器)作为两者的中介,子线程会将数据传给handler(处理器),
再由handler(处理器)传到主线程上

我们还可以将queue与队列以及堆栈进行对比:

 queue:同队列一样,数据存取遵循**先进先出**原则
 堆栈:先进后出

接口五:Map接口

其子类可与Set接口子类对比

数组:Arrays

说到Array数组,我们可以将它与它的复杂版本ArrayList进行对比
1、Array与ArrayList的区别:

 ①储存的数据类型:
		Array只能放一种数据类型
		ArrayList可放多种数据类型,可通过泛型进行绑定数据类型,提高安全性
②长度:
		Array不可变
		ArrayList可变

2、数组与集合之间的相互转换

 数组——>集合:Arrays.asList(数组)
 集合——>数组:list.toArray()

总结

我们总结一下:
对于集合,面试官能提到的问题,无非就是以上集合的区别,当面试官问到这类问题的时候,我们可以结合我们的项目加以自己的理解讲给面试官听,一定要记住,不管面试官出什么样的题目,心态不要慌,因为对于程序编程的问题,每个人都有自己的理解,一定要相信自己的答案,但是不能太模棱两可,给面试官以错误的答案
这里我们来补充一些面试官除了上面提及之外可能会提到的问题:
1、List、Set、Map之间的区别:

List:有序,可重复(首页展示页面经常使用,在Controller层转为json格式,再放到页面上)
Set:无序,不可重复(在解决表格之间一对多和多对多的关系中经常使用)
Map:键值对存储值,键唯一,值可重复(就好比我们的联系人,电话号码必须一致,但是联系人可以是重复的名字)

2、HashMap与HashSet的区别:
对于这个问题,我们可以从它们继承的父类进行对比

3、HashMap的工作原理:

关于HashMap的工作原理,不知道的话,我们可以很大方告诉面试官我们没有注意到HashMap的工作原理,
我们只要知道在我们项目中是session的get/set行为就差不多了

关于集合的部分常见面试问题,今天我们就分享到这里(*❦ω❦)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值