Java Collections 面试问题和答案 [适合新手和有经验者]
已发表: 2020-12-16如果您在本科阶段处理过 Java 或使用过 Java,那么您一定对 Java Collection 框架了如指掌。 对于刚开始 Java 之旅的初学者来说,Collection 框架是一个统一的架构,旨在存储和操作一组(集合)对象。
本质上,“集合”代表一组对象。 Java 集合包括接口、类(ArrayList、Vector、Stack 和 Hashtable 等)以及具有用于存储和处理数据的即用型架构的算法。
在本文中,我们将了解最常见的 Java Collections 面试问题。 我们创建了一个面试 Java 简介面试候选人时通常会问的基本问题列表。 这应该可以帮助您了解在下一次面试中期待什么样的问题。
Java Collections 面试问答
1. 使用 Collections 框架有什么好处?
Java Collections 包括用于线程安全操作的泛型和并发集合类。 此外,它配备了阻塞接口及其在 Java 并发包中的实现。 以下是 Java Collections 框架的一些好处:
它促进了代码的可重用性和互操作性。

核心集合类的使用大大减少了开发工作和时间。
JDK 附带的集合类减少了代码维护所需的工作量。
2. 区分数组和集合。
尽管数组和集合用于存储对象和操作数据,但它们有一些天生的区别:
- 您不能根据运行时要求增加或减少数组的长度——数组的大小是固定的。 但是,您可以根据缩放需要更改集合的大小。
- 数组只能存储同质(相似或相同)对象,而集合可以存储异构对象组。
- 虽然数组不提供针对用户需求的即用型方法(搜索、排序、插入等),但集合始终包含即用型方法。
3. 泛型在 Collections 框架中的作用是什么?
泛型允许您指定或定义集合可以存储的对象类型。 如果您尝试添加不同类型的元素,泛型将显示编译时错误。 因此,通过在编译期间显示错误,它有助于在运行时防止 ClassCastException。 此外,由于泛型消除了使用强制转换和 instanceof 函数的需要,因此它使代码干净而精确。
4. 命名集合框架的接口。
下面是 Collections 框架中的五个核心接口:
集合接口——它是 Java 集合层次结构的基础。 Java 中的大多数集合都继承自 Collections 接口。
列表接口——它是一个包含有序元素及其重复元素的扩展数组。 该接口支持基于索引的搜索。 因此,您可以从其索引访问任何元素。 它是通过使用不同的类来实现的,如 ArrayList、LinkedList 等。
集合接口——它是一个不能包含重复元素的集合类。 与 List 不同的是,它不支持基于索引的搜索,也不为元素定义任何顺序。 Set 对数学集合抽象进行建模,并由 HashSet、TreeSet、LinkedHashSet 等类实现。
Map接口——它是一种二维数据结构,以键值对的形式存储数据。 虽然键是唯一的哈希码,但值表示元素。 地图不能有重复的键/元素。
队列接口——此接口以先进先出 (FIFO) 方法排列元素。 因此,队列接口中的元素从前端移除并从后端添加。
另请阅读:如何编写、编译和运行 Java 项目
5. 什么时候应该重写 Java 中的 equals() 方法?
虽然 equals() 方法的初始实现会检查两个对象是否相似,但如果您希望根据它们的属性比较对象,则必须重写 equals() 方法。
6、使用Properties文件有好处吗?
是的,在 Java 中使用 Properties 文件扩展了一个主要优势——如果您更改此文件中的值,它将自动反映,而无需重新编译 Java 类。 因此,Properties 文件主要用于存储容易更改的信息(例如,用户名和密码)。它允许轻松管理 Java 应用程序。
7、Collection框架中Iterator的作用是什么?
Iterator 是 java.util 包中的一个接口。 也称为通用 Java 游标,迭代器帮助迭代对象集合。 Iterator 允许您一个一个地传递对象集合,并支持 READ 和 REMOVE 操作。 它被广泛使用,因为 Iterator 方法名称可以很容易地实现。
8. 如何对 Collection 对象进行排序?
在 Collections 框架中,排序通常使用Comparable和Comparator接口来实现。 如果使用 Collections.sort() 方法,它将根据 compareTo() 方法中指定的自然顺序对元素进行排序。 但是,当您使用 Collections.sort(Comparator) 方法时,它会根据 Comparator 接口的 compare() 方法对元素进行排序。
阅读:Java Swing 项目
9. 是否可以将 ArrayList 转换为 Array 并将 Array 转换为 ArrayList?
是的,可以这样做。 您可以使用 Array 类的 asList() 函数将 Array 转换为 ArrayList。 其语法如下:

Arrays.asList(项目)
您可以使用 ArrayList 类的 toArray() 函数将 ArrayList 转换为 Array,如下所示:
List_object.toArray(新字符串[List_object.size()])
10. 如何反转一个列表?
你将如何反转一个 ArrayList?
您可以使用 Collections 类的 reverse() 函数反转 ArrayList。 其语法如下:
公共静态无效反向(集合 c)
11.什么是“阻塞队列”?
BlockingQueue 接口存在于 java.util.concurrent包中。 它的主要目的是通过激活阻塞来增强流控制,只要线程尝试将空队列出队或将现有的满队列入队。 BlockingQueue 接口不接受空值,如果尝试插入空值,则会显示 NullPointerException。
12. 解释“优先队列”。
优先级队列是一种抽象数据类型,例如标准队列或堆栈数据结构。 然而,在这个队列中,每个元素都有一个独特的特性,称为“优先级”。 由于它基于优先级堆,因此优先级队列在低优先级元素之前为高优先级元素提供服务,而不管它们的插入顺序如何。 在优先级队列中,元素要么根据自然顺序进行排序,要么根据队列构建时使用的比较器进行排序(取决于您使用的构造函数)。
13、HashSet类是如何存储元素的?
HashSet 类是 Java Collections 框架的成员,它继承了 AbstractSet 类并实现了 Set 接口。
HashSet 实现了一个用于创建和存储元素集合的 Hashtable。 Hashtable 是 HashMap 类的一个实例,它使用散列机制在 HashSet 中存储数据。 散列是指将信息转换为称为散列码的唯一值的技术。 哈希码索引与唯一键关联的数据。
14. 是否可以在 TreeSet 或 HashSet 中添加空元素?
虽然您只能在 HashSet 中添加一个空元素,但您不能在 TreeSet 中这样做,因为它使用 NavigableMap 来存储元素。 NavigableMap 是 SortedMap 的子类型,不接受/支持空值。 如果将 null 元素插入 TreeSet,则会触发 NullPointerException。
15.emptySet()函数有什么作用?
在 Java 中, Collections.emptySet() 用于通过消除所有空元素来返回空的不可变集。 下面是声明 emptySet() 的语法:
public static final <T> Set<T> emptySet()
16、为什么Map接口没有扩展Collection接口?
Map 接口遵循键值对结构,而 Collection 接口以结构化方式存储对象集合,并具有定义的访问机制。 Map 没有扩展 Collection 接口,因为 Collection 接口的 add(E e) 函数不支持 Map 的 put(K key, V value) 函数的键值对模型。
17. 命名由 Map 接口扩展的不同 Collection 视图。
Map 接口提供了三种键值对视图,即:
- 键集视图
- 值集视图
- 条目集视图
18.列出Java Hashmap的核心特性。
Hashmap 的基本特征是:
- 您可以通过形成键值对来存储元素,并通过将键传递给正确的方法来检索值。
- 如果 Map 中不存在任何元素,则显示 NoSuchElementException。
- 它只存储对象引用,因此无法使用像 double 或 int 这样的原始数据类型。 相反,您可以使用 Integer 或 Double 之类的包装类。
必读:Java 面试问答
19. 定义“堆栈”。

在 Java 中,堆栈表示计算机内存的指定区域,用于保存由函数创建的临时变量。 变量在运行时在堆栈中被声明、存储和初始化。
20. 定义“大 O 符号”。
Big-O 表示法定义了与数据结构中元素数量相关的算法性能。 集合类是数据结构,因此,您需要使用 Big-O 表示法来根据内存、时间和性能来决定使用哪个集合实现。
报名参加世界顶尖大学的软件工程课程。 获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。
结论
如果您有兴趣了解有关 Java 全栈软件开发的更多信息,请查看 upGrad 和 IIIT-B 的全栈软件开发执行 PG 计划,该计划专为在职专业人士设计,提供 500 多个小时的严格培训,9+项目和任务、IIIT-B 校友身份、实用的实践顶点项目和顶级公司的工作协助。
