动力节点旗下在线教育品牌  |  咨询热线:400-8080-105 学Java全栈,上蛙课网
首页 > 文章

java collection面试题汇总(附答案)

08-26 17:00 83浏览
举报 T字号
  • 大字
  • 中字
  • 小字

在很多大公司java程序员岗位的面试中,对java集合框架方面的知识点考察的几率还是很大的。因为每一种语言都会使用到框架,这就使得框架成为了程序员们的必备技能之一,java编程也是如此。下面整理了一些java collection面试题,有面试需要的朋友们可以学习一下。

对于集合类,主要需要掌握的就是它的内部结构,以及遍历集合的迭代模式。

1、Java集合框架的基本接口是什么?

答:Collection是集合层次的根。一个集合包含一组对象作为其元素。 Java平台不提供任何直接实现这个接口。

Set 是一个不能包含重复的元素的集合。此接口模型代表数学Set的抽象,用来代表一组Set,如一副扑克牌。

List是有序集合,可以包含重复的元素。您可以从它的索引访问任何元素。更像是动态长度的数组列表。

一个Map是一个键映射值的对象。一个Map不能包含重复键:每个key只能映射一个值。

其他一些接口Queue, Dequeue, Iterator, SortedSet,SortedMap的和listIterator。

2、为什么MAP接口不实现Collection接口?

答:虽然Map接口和它的实现是集合框架的一部分,但是MAP不是集合,而且集合也不是地图。因此,它实现集合接口没有任何意义。

3、为什么要集合不能继承Cloneable和Serializable接口?

答:Collection接口指定一组称为元素的对象。元素如何被组织取决于具体实现。例如,一些LIST实现允许重复的元素,而SET不允许。Collection是一种抽象表示,而克隆和序列化重在执行,应该是在Collection具体实现子类中根据具体元素组织情况来实现。因此,强制在所有实现都要有克隆和序列化是不够灵活的,具有限制性。

4、Iterator是什么?

答:Iterator接口提供遍历集合的方法。从一个集合中使用迭代方法,我们可以得到迭代器实例。迭代器允许呼叫者在迭代过程中从集合中删除元素。

5、Iterator和listIterator之间有什么不同?

答:我们可以使用迭代器Iterator遍历Set和List集合,而ListIterator只可以使用List。

迭代器遍历只有向前的方向,而ListIterator可以用来在两个方向遍历。

ListIterator继承Iterator接口,并配备了额外的功能,如添加元素,更换一个元素,能获得上一个和下一个元素的索引位置。

6、Set接口是什么?

答:Set是一种不包含重复的元素的Collection,即任意的两个元素e1和e2都有e1.equals(e2)=false,Set最多有一个null元素。很明显,Set的构造函数有一个约束条件,传入的Collection参数不能包含重复的元素。

请注意:必须小心操作可变对象(Mutable Object)。如果一个Set中的可变元素改变了自身状态导致Object.equals(Object)=true将导致一些问题。

7、为什么没有Iterator接口的具体实现?

答:每个集合返回一个迭代器用来遍历自己。这使得集合类能够选择是否迭代器是快速失败 fail-fast或故障安全fail-safe。例如ArrayList的迭代器是快速失败的,而CopyOnWriteArrayList的迭代器是故障安全。

8、HashMap如何工作?

答:HashMap以哈希算法方式工作,在put和get方法被调用时,使用hashCode()和equals()来配合:当我们使用put方法,HashMap使用key的hashCode()散列在键 - 值存储对中找出索引。k-v条目Entry存储在LinkedList,因此如果有已经存在的Entry,它就使用equals()方法来检查其相应的键key是否已经存在,如果是的,它覆盖原值,否则它创建一个新Enrty条目和存储这个键-值;当我们通过键key调用get方法,再次使用的hashCode()找到数组中的索引,然后使用equals()方法来找到正确的条目,并返回它的值。

9、Map提供的Collection视图之间有什么区别?

答:(1)Set keySet():返回此Map中包含的键的Set视图;(2)Collection values():返回此Map中包含的值的Collection视图;(3)Set> entrySet():返回在此Map中包含的映射关系的Set视图。

10、集合框架的好处都有什么?

答:使用核心集合类,而不需要实现我们自己的集合类,减少了开发工作;使用经过测试的集合框架类提高代码质量;使用JDK附带的集合类减少代码维护的工作;可重用性和互操作性。

以上是今天为大家整理的java collection面试题,共有10道,里面包含了最常考的知识点,希望大家在看到自己模糊的知识点时,可以及时的通过查阅资料和听相关的java培训课程的方式来彻底学会搞懂java collection方面的内容,掌握好java collection基础知识,顺利通过java面试。

0人推荐
共同学习,写下你的评论
0条评论
代码小兵1123
程序员代码小兵1123

6篇文章贡献24102字

作者相关文章更多>

推荐相关文章更多>

Java数据结构

HelloWorld10-31 08:24

浅谈MySQL中SQL优化的常用方法

军哥08-12 23:29

MyBatis开发框架的四大核心

IT逐梦者08-17 21:43

五分钟读懂UML类图

江湖人称小李白12-10 10:41

一次搞定continue,break和return

HelloWorld11-06 11:19

发评论

举报

0/150

取消