在很多大公司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面试。
HelloWorld10-31 08:24
军哥08-12 23:29
江湖人称小李白12-10 10:41
IT逐梦者08-17 21:43
HelloWorld11-06 11:19