易百教程

Java集合面试题和答案(2024年收集更新)

2024年收集更新的Java集合面试题和答案,在 Java 中,面试官问的最多的问题是集合相关的问题。下面列出常被问到的集合问题和答案。
集合框架是类和接口的组合,用于以对象的形式存储和操作数据。它提供了ArrayList、Vector、Stack、HashSet等各种类和List、Queue、Set等接口。 完整答案
Array 和 Collection 在存储对象的引用和操作数据方面有些相似,但它们在很多方面有所不同。数组和集合之间的主要区别定义如下: 数组始终是固定大小的,即用户不能根据自己的需要或在运行时增加或减少数组的长度,但在 Collection 中,大小可以根据需要动态更改。数组只能存储同种或相似类型的对象,但在Collection中可以存储异构对象。数组不能提供现成的用户要求的方法,如排序、搜索等,但 Collection 包括现成的使用方法。 完整答案
Collection框架实现了各种接口,Collection接口和Map接口(java.util.Map)是Java Collection Framework主要使用的接口。Collection Framework的接口列表如下: 1、Collection接口: 集合(java.util.Collection)是主要接口,每个集合都必须实现这个接口。 语法: public interface Collection<E>extends Iterable 其中<E>表示这个... 完整答案
ArrayList 和 Vector 有以下区别: 编号 ArrayList Vector 1 ArrayList 不同步。 Vector是同步的。 2 ArrayList 不是遗留类。 Vector 是一个遗留类。 3 ArrayList 将其大小增加了数组大小的 50%。 Vector 通过将数组大小加倍来增加其大小。 4 ArrayList 不是线程安全的,因为它不同步。 Vector列表是线程安全的,因为它的每个方法都是同步的。 完整答案
ArrayList 和 LinkedList 有以下区别: 编号 ArrayList LinkedList 1 ArrayList 使用动态数组。 LinkedList 使用双向链表。 2 ArrayList 操作效率不高,因为需要太多。 LinkedList 对操作很有效。 3 ArrayList 更适合存储和获取数据。 LinkedList 更适合操作数据。 4 ArrayList 提供随机访问。 LinkedList 不提供随机访问。 5 ArrayList ... 完整答案
Iterator 仅向前遍历元素,而 ListIterator 向前和向后遍历元素。 编号 Iterator ListIterator 1 Iterator只在前向遍历元素。 ListIterator 向后和向前遍历元素。 2 Iterator 可以用在List、Set、Queue中。 ListIterator 只能在 List 中使用。 3 Iterator 只能在遍历集合时执行remove操作。 ListIterator 可以执行 add,remove,set 遍历集合... 完整答案
迭代器和枚举有以下区别: 编号 迭代器 枚举 1 Iterator可以遍历legacy和non-legacy元素。 枚举只能遍历遗留元素。 2 迭代器是快速失败的。 枚举不是快速失败的。 3 Iterator 比 Enumeration 慢。 枚举比迭代器快。 4 Iterator可以在遍历集合的同时进行remove操作。 Enumeration 只能对集合进行遍历操作。 完整答案
List 和 Set 都扩展了集合接口。但是,两者之间存在一些差异,如下所示: List 可以包含重复的元素,而 Set 包含唯一的项目。List 是维护插入顺序的有序集合,而 Set 是不保留插入顺序的无序集合。List 接口包含一个遗留类,它是 Vector 类,而 Set 接口没有任何遗留类。List 接口可以允许 n 个null值,而 Set 接口只允许单个null值。 完整答案
HashSet 和 TreeSet 这两个类都实现了 Set 接口。下面列出了两者之间的区别。 HashSet 保持无序,而 TreeSet 保持升序。HashSet 由哈希表实现,而 TreeSet 由 Tree 结构实现。HashSet 的执行速度比 TreeSet 快。HashSet 由 HashMap 支持,而 TreeSet 由 TreeMap 支持。 完整答案
Set 和 Map 之间的区别如下所示: Set 仅包含值,而 Map 包含键和值。Set 包含唯一值,而 Map 可以包含具有重复值的唯一键。Set 包含单个null值,而 Map 可以包含单个空键和 n 个null值。 完整答案
下面列出了 HashSet 和 HashMap 之间的区别: HashSet 仅包含值,而 HashMap 包含条目(键,值)。HashSet是可以迭代的,但是HashMap需要转换成Set才能迭代。HashSet 实现了 Set 接口,而 HashMap 实现了 Map 接口HashSet 不能有任何重复值,而 HashMap 可以包含具有唯一键的重复值。HashSet 包含唯一的单个null值,而 HashMap 可以保存具有 n 个null值的单个null键。 完整答案
下面给出 HashMap 和 TreeMap 之间的区别: HashMap 保持无序,而 TreeMap 保持升序。HashMap 是通过哈希表实现的,而 TreeMap 是通过 Tree 结构实现的。HashMap 可以按 Key 或 value 排序,而 TreeMap 可以按 Key 排序。HashMap 可能包含具有一个null值和多个null值,而 TreeMap 不能包含null键但可以具有多个null值。 完整答案
HashMap 和 Hashtable 有以下区别: 编号 HashMap Hashtable 1 HashMap 不同步。 Hashtable是同步的。 2 HashMap 可以包含一个null键和多个null值。 Hashtable 不能包含任何null键或null值。 3 HashMap 不是线程安全的,所以它对非线程应用程序很有用。 Hashtable是线程安全的,可以在各个线程之间共享。 4 HashMap 继承 AbstractMap 类 Hashtable... 完整答案
下面给出集合和集合之间的区别: Collection 是一个接口,而 Collections 是一个类。Collection 接口为 List、Set 和 Queue 提供数据结构的标准功能。但是,Collections 类是对集合元素进行排序和同步的。Collection 接口提供了可用于数据结构的方法,而 Collections 类提供了可用于对集合进行各种操作的静态方法。 完整答案
编号 Comparable Comparator 1 Comparable 只提供一种序列。 Comparator 提供多种序列。 2 它提供了一种名为 compareTo() 的方法。 它提供了一种名为 compare() 的方法。 3 它位于 java.lang 包中。 它位于 java.util 包中。 4 如果实现 Comparable 接口,实际类被修改。 实际类没有改变。 完整答案
BlockingQueue 是一个扩展 Queue 接口的接口。它在检索、插入、删除等操作中提供并发性。在检索任何元素时,它会等待队列非空。在存储元素时,它会等待可用空间。BlockingQueue 不能包含空元素,BlockingQueue 的实现是线程安全的。 语法: public interface BlockingQueue<E> extends Queue <E> 完整答案
如果更改属性文件中的值,则无需重新编译 java 类。因此,它使应用程序易于管理。它用于存储需要经常更改的信息。参考以下示例: import java.util.*; import java.io.*; public class Test { public static void main(String[] args)throws Exception{ FileReader reader=new FileReader("db.properties... 完整答案
hashCode()方法返回一个哈希码值(一个整数)。如果两个键(通过调用 equals() 方法)相同,则 hashCode()方法返回相同的整数。但是,两个哈希码可能具有不同或相同的密钥。如果两个对象通过使用 equals() 方法没有产生相等的结果,那么 hashcode() 方法将为两个对象提供不同的整数结果。 完整答案
equals()方法用于检查两个对象是否相同。如果想根据属性检查对象,则需要重写它。例如,Employee 是一个有 3 个数据成员的类:id、name 和salary。但是,想通过薪水检查员工对象的相等性。那么需要重写 equals() 方法。 完整答案
Collections 类提供了使 List、Set 或 Map 元素同步的方法: public static List synchronizedList(List l){} public static Set synchronizedSet(Set s){} public static SortedSet synchronizedSortedSet(SortedSet s){} public static Map synchronizedMap(Map m){} public static S... 完整答案
使用泛型集合有三个主要优点: 如果使用泛型类,我们不需要类型转换。它是类型安全的,并在编译时进行检查。Generic通过在编译时检测到错误来确认代码的稳定性。 完整答案
具有相同哈希值的两个不同键称为哈希冲突。两个单独的条目将保存在一个哈希桶中以避免冲突。有两种方法可以避免哈希冲突。 分离链开放寻址 完整答案
Dictionary 类提供了存储键值对的能力。 完整答案
负载因子的默认大小为 0.75。默认容量计算为初始容量 * 负载因子。例如,16 * 0.75 = 12。所以,12 是 Map 的默认容量。 完整答案
如果发生任何结构修改,Java 中立即抛出 ConcurrentmodificationException 的 Iterator 称为 Fail-fast 迭代器。Fail-fats 迭代器不需要任何额外的内存空间。 完整答案
下面给出了 Array 和 ArrayList 之间的主要区别。 SN Array ArrayList 1 数组是固定大小的,这意味着我们不能根据需要调整数组的大小。 ArrayList 不是固定大小的,可以动态改变大小。 2 数组是静态类型的。 ArrayList 是动态大小的。 3 数组可以存储原始数据类型以及对象。 ArrayList 不能存储原始数据类型,它只能存储对象。 完整答案
下面给出了 Array 和 ArrayList 之间的主要区别。 SN Array ArrayList 1 数组是固定大小的,这意味着我们不能根据需要调整数组的大小。 ArrayList 不是固定大小的,可以动态改变大小。 2 数组是静态类型的。 ArrayList 是动态大小的。 3 数组可以存储原始数据类型以及对象。 ArrayList 不能存储原始数据类型,它只能存储对象。 完整答案
数组的长度可以通过length属性获取,ArrayList不支持length属性,但是可以使用size()方法来获取列表中对象的个数。 查找数组的长度 - Int [] array = new int[4]; System.out.println("The size of the array is " + array.length); 查找 ArrayList 的大小 - ArrayList<String> list=new ArrayList<St... 完整答案
可以使用 Arrays 类的 asList() 方法将 Array 转换为 ArrayList。asList() 方法是 Arrays 类的静态方法,接受 List 对象。参考以下语法: Arrays.asList(item) 可以使用 ArrayList 类的 toArray() 方法将 ArrayList 转换为 Array。请参考以下语法将 ArrayList 转换为 List 对象。 List_object.toArray(new String[List_object.size()])... 完整答案
可以通过调用 Collections.unmodifiableCollection() 方法获取 java ArrayList 只读。当将 ArrayList 定义为只读时,无法通过 add()、remove() 或 set() 方法对集合进行任何修改。 完整答案
有两种方法可以从 ArrayList 中删除重复项: 使用HashSet: 通过使用 HashSet,可以从 ArrayList 中删除重复元素,但它不会保留插入顺序。使用LinkedHashSet: 还可以使用 LinkedHashSet 代替 HashSet 来维护插入顺序。 使用 LinkedHashSet 从 ArrayList 中删除重复元素的过程: 将 ArrayList 的所有元素复制到 LinkedHashSet。使用 clear() 方法清空 ArrayList,这将删除列... 完整答案
要反转 ArrayList,可以使用 Collections 类的 reverse() 方法。参考以下示例: import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Iterator; import java.util.List; public class ReverseArrayList { public static ... 完整答案
要对 ArrayList 进行降序排序,可以使用 Collections 类的 reverseOrder 方法。参考以下示例: import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.Iterator; import java.util.List; public ... 完整答案
可以通过两种方式同步 ArrayList。 使用 Collections.synchronizedList() 方法;使用 CopyOnWriteArrayList<T>; 完整答案
LinkedLists 更适合用于更新操作,而 ArrayLists 更适合用于搜索操作。 完整答案