Java集合面试题, Java 中有哪些集合类?请简单介绍
Java集合面试题, Java 中有哪些集合类?请简单介绍
QA
Step 1
Q:: Java 中有哪些集合类?请简单介绍。
A:: Java 中的集合类主要包括以下几类:
1.
List:有序的集合,允许重复元素。常见实现类有 ArrayList、LinkedList。
2.
Set:不允许重复元素的集合。常见实现类有 HashSet、LinkedHashSet、TreeSet。
3.
Queue:队列,遵循 FIFO(先进先出)原则。常见实现类有 LinkedList、PriorityQueue。
4.
Deque:双端队列,可以从两端进行插入和删除操作。常见实现类有 LinkedList、ArrayDeque。
5.
Map:键值对集合,键不允许重复。常见实现类有 HashMap、LinkedHashMap、TreeMap、ConcurrentHashMap。
Step 2
Q:: ArrayList 和 LinkedList 有什么区别?
A:: ArrayList 和 LinkedList 的主要区别在于底层数据结构和性能特性:
1.
ArrayList 底层使用动态数组实现,随机访问速度快,插入和删除元素时性能较差(特别是中间位置)。
2.
LinkedList 底层使用双向链表实现,插入和删除元素时性能较好(特别是中间位置),但随机访问速度较慢。
Step 3
Q:: HashMap 和 Hashtable 有什么区别?
A:: HashMap 和 Hashtable 的主要区别有:
1.
线程安全性:HashMap 不是线程安全的,Hashtable 是线程安全的。
2.
同步机制:HashMap 使用非同步实现,Hashtable 使用同步实现。
3.
性能:由于同步机制的不同,HashMap 性能一般比 Hashtable 更高。
4.
允许 null 值:HashMap 允许键和值为 null,而 Hashtable 不允许。
Step 4
Q:: 什么是 ConcurrentHashMap?它与 HashMap 的区别是什么?
A:: ConcurrentHashMap 是 Java 中提供的一个线程安全的 Map 实现。它通过分段锁(Segment)实现高效并发操作。与 HashMap 的区别主要在于:
1.
线程安全性:ConcurrentHashMap 是线程安全的,而 HashMap 不是。
2.
锁机制:ConcurrentHashMap 使用分段锁来提高并发性能,而 HashMap 没有锁机制。
3.
性能:在高并发环境下,ConcurrentHashMap 比 HashMap 具有更好的性能。
Step 5
Q:: TreeSet 和 HashSet 有什么区别?
A:: TreeSet 和 HashSet 的主要区别在于:
1.
底层实现:TreeSet 底层使用红黑树实现,HashSet 底层使用哈希表实现。
2.
顺序:TreeSet 中的元素是有序的(根据自然顺序或提供的比较器),HashSet 中的元素是无序的。
3. 性能:TreeSet 的操作时间复杂度为 O(log n),HashSet 的操作时间复杂度为 O(1)
。