问题导读
一、试比较 Queue 与 Deque 的区别?
二、请谈一下对 PriorityQueue 的认识?
三、Collection 和 Collections 有什么区别?
01 | 试比较 Queue 与 Deque 的区别?
Queue 是单端队列,只能从一端插入元素,另一端删除元素,实现上一般遵循先进先出(FIFO)规则。
Queue 扩展了 Collection 的接口,根据因为容量问题而导致操作失败后处理方式的不同可以分为两类方法:
一种在操作失败后会抛出异常,另一种则会返回特殊值。
Deque 是双端队列,在队列的两端均可以插入或删除元素。
Deque 扩展了 Queue 的接口, 增加了在队首和队尾进行插入和删除的方法,同样根据失败后处理方式的不同分为两类:
02 | 请谈一下对 PriorityQueue 的认识?
PriorityQueue 是在 JDK1.5 中被引入的, 其与 Queue 的区别在于元素出队顺序是与优先级相关的,即总是优先级最高的元素先出队。
这里列举其相关的一些要点:
PriorityQueue 利用了二叉堆的数据结构来实现的,底层使用可变长的数组来存储数据
PriorityQueue 通过堆元素的上浮和下沉,实现了在 O(logn) 的时间复杂度内插入元素和删除堆顶元素。
PriorityQueue 是非线程安全的,且不支持存储 NULL 和 non-comparable 的对象。
PriorityQueue 默认是小顶堆,但可以接收一个 Comparator 作为构造参数,从而来自定义元素优先级的先后。
03 | Collection 和 Collections 有什么区别?
java.util.Collection 是一个集合接口(集合类的一个顶级接口),它提供了对集合对象进行基本操作的通用接口方法。
Collection 接口在 Java 类库中有很多具体的实现。Collection 接口的意义是为各种具体的集合提供了最大化的统一操作方式,其直接继承接口有 List 与 Set。
Collections 则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序、搜索以及线程安全等各种操作。
- End -
学习之路贵在坚持,关注我!
浩说编程陪你每天三道高频面试题,日积月累一定会有所收获!
关注我,每天三道面试题~