Java 集合面试题, Java 中有哪些集合类?请简单介绍
Java 集合面试题, Java 中有哪些集合类?请简单介绍
QA
Step 1
Q:: Java 中有哪些集合类?请简单介绍
A:: Java 集合框架主要包括以下几种集合类:
1. List 接口:实现类有 ArrayList,
LinkedList 等,允许重复元素,有序。
2. Set 接口:实现类有 HashSet,
TreeSet 等,不允许重复元素,无序或有序(如 TreeSet)。
3. Map 接口:实现类有 HashMap,
TreeMap 等,存储键值对,不允许键重复。
4. Queue 接口:实现类有 LinkedList,
PriorityQueue 等,通常用于处理队列结构。
5. Deque 接口:实现类有 ArrayDeque,
LinkedList 等,支持双端队列操作。
Step 2
Q:: ArrayList 和 LinkedList 有什么区别?
A:: ArrayList 基于动态数组实现,适合查找和随机访问操作,时间复杂度为 O(1)。LinkedList 基于双向链表实现,适合插入和删除操作,时间复杂度为 O(1),但查找元素时间复杂度为 O(n)
。
Step 3
Q:: HashMap 和 TreeMap 有什么区别?
A:: HashMap 基于哈希表实现,插入和查找操作的平均时间复杂度为 O(1),元素无序。TreeMap 基于红黑树实现,保证元素按键值排序,插入和查找操作的时间复杂度为 O(log n)
。
Step 4
Q:: HashSet 如何确保元素不重复?
A:: HashSet 使用 HashMap 来存储元素,基于元素的 hashCode() 和 equals() 方法来确保元素的唯一性。当插入元素时,HashSet 通过计算元素的哈希值确定存储位置,如果发现已有相同哈希值且 equals()
方法返回 true 的元素,则认为是重复元素,不进行插入。
Step 5
Q:: 什么是 fail-
fast 机制?
A:: fail-fast 机制是指在遍历集合时,如果集合结构被修改(如插入或删除元素),会立即抛出 ConcurrentModificationException 异常。Java 中的迭代器大多数都是 fail-
fast 的,用于防止并发修改导致的不一致性。