java 集合框架面试题及答案
时间: 2023-07-27 18:07:47 浏览: 157
好的,我会为你介绍一些Java集合框架的面试题及答案。
1. Java 集合框架包括哪些接口及其特点?
Java集合框架包括以下接口:
- Collection 接口:表示一组对象,它们可能是有序的或无序的,并且可以包含重复的元素。
- List 接口:继承自 Collection 接口,表示有序集合,并且允许重复元素。
- Set 接口:继承自 Collection 接口,表示无序集合,并且不允许重复元素。
- Map 接口:表示一组键值对,其中键是唯一的,但值可以重复。
2. ArrayList 和 LinkedList 的区别是什么?
ArrayList 和 LinkedList 都实现了 List 接口,但它们的实现方式不同。ArrayList 是基于动态数组实现的,它的元素可以直接通过下标访问,因此查找元素的效率比较高。LinkedList 是基于双向链表实现的,它的元素不能直接通过下标访问,但在插入和删除元素时效率比 ArrayList 更高。
3. HashMap 和 HashTable 的区别是什么?
HashMap 和 HashTable 都实现了 Map 接口,但它们的实现方式不同。HashMap 是非线程安全的,它允许存储空键和空值。HashTable 是线程安全的,但它不允许存储空键或空值。另外,HashMap 的迭代器是 fail-fast 的(在迭代器中修改了 map 的结构会抛出 ConcurrentModificationException),而 HashTable 的迭代器不是 fail-fast 的。
4. HashSet 和 TreeSet 的区别是什么?
HashSet 和 TreeSet 都实现了 Set 接口,但它们的实现方式不同。HashSet 是基于 HashMap 实现的,它不保证元素的顺序,也不允许重复元素。TreeSet 是基于 TreeMap 实现的,它保证元素是有序的,并且不允许重复元素。
5. 如何选择合适的集合?
选择集合要根据具体的需求来决定。如果需要有序集合,并且需要频繁地在集合中间插入或删除元素,可以选择 LinkedList。如果需要有序集合,并且需要频繁地访问集合中的元素,可以选择 ArrayList。如果需要无序集合,并且需要快速地查找元素,可以选择 HashSet。如果需要有序集合,并且需要快速地查找元素,可以选择 TreeSet。如果需要存储键值对,并且需要根据键快速地查找值,可以选择 HashMap。如果需要存储键值对,并且需要有序地遍历键值对,可以选择 TreeMap。如果需要线程安全的集合,可以选择 HashTable 或 ConcurrentHashMap。
阅读全文