面试题答案
一键面试List接口
- 特点:
- 数据存储方式:有序存储,元素按插入顺序排列,支持通过索引访问元素。
- 是否允许重复元素:允许重复元素。
- 特有方法:提供了大量基于索引操作元素的方法,如
add(int index, E element)
、get(int index)
等。
- 适用场景:
- 当需要按照插入顺序存储元素,并且需要频繁地根据索引访问元素时适用。例如,实现一个学生成绩管理系统,需要记录学生成绩的录入顺序,并根据学号(索引)查询学生成绩,就可以使用
List
。常见的实现类有ArrayList
和LinkedList
,ArrayList
基于数组实现,查询效率高;LinkedList
基于链表实现,插入和删除效率高。
- 当需要按照插入顺序存储元素,并且需要频繁地根据索引访问元素时适用。例如,实现一个学生成绩管理系统,需要记录学生成绩的录入顺序,并根据学号(索引)查询学生成绩,就可以使用
Set接口
- 特点:
- 数据存储方式:无序存储(具体实现可能有自己的排序规则,如
TreeSet
是有序的),不保证元素的顺序。 - 是否允许重复元素:不允许重复元素,当试图添加已存在的元素时,添加操作会失败(
add
方法返回false
)。 - 特有方法:没有特有的方法,主要通过
Collection
接口的方法操作元素。
- 数据存储方式:无序存储(具体实现可能有自己的排序规则,如
- 适用场景:
- 当需要存储唯一元素,并且不需要保持元素插入顺序时适用。例如,统计一篇文章中出现的不同单词,可以使用
Set
。常见的实现类有HashSet
和TreeSet
,HashSet
基于哈希表实现,查找效率高;TreeSet
基于红黑树实现,元素有序。
- 当需要存储唯一元素,并且不需要保持元素插入顺序时适用。例如,统计一篇文章中出现的不同单词,可以使用
Queue接口
- 特点:
- 数据存储方式:通常按FIFO(先进先出)原则存储元素,不过也有
PriorityQueue
等特殊实现可以根据元素的优先级存储。 - 是否允许重复元素:允许重复元素。
- 特有方法:提供了
offer(E e)
、poll()
、peek()
等方法,offer
用于向队列添加元素,poll
用于移除并返回队列头部元素,peek
用于返回队列头部元素但不移除。
- 数据存储方式:通常按FIFO(先进先出)原则存储元素,不过也有
- 适用场景:
- 当需要按照元素进入的顺序处理元素时适用。例如,实现一个任务调度系统,任务按照提交顺序依次执行,就可以使用
Queue
。常见的实现类有PriorityQueue
和LinkedList
(LinkedList
实现了Queue
接口),PriorityQueue
适用于需要根据元素优先级处理任务的场景。
- 当需要按照元素进入的顺序处理元素时适用。例如,实现一个任务调度系统,任务按照提交顺序依次执行,就可以使用