1
0
mirror of https://github.com/Snailclimb/JavaGuide synced 2025-06-25 02:27:10 +08:00

Update Java集合框架常见面试题.md

This commit is contained in:
kaka2634 2021-08-14 19:03:14 +08:00
parent 04e7b58928
commit fb609a83ed

View File

@ -342,7 +342,7 @@ Output
| 查询队首元素 | getFirst() | peekFirst() | | 查询队首元素 | getFirst() | peekFirst() |
| 查询队尾元素 | getLast() | peekLast() | | 查询队尾元素 | getLast() | peekLast() |
事实上,`Deque` 还提供有 `push()``pop()` 等其他方法,用于模拟栈。 事实上,`Deque` 还提供有 `push()``pop()` 等其他方法,用于模拟栈。
### 1.4.2 ArrayDeque 与 LinkedList 的区别 ### 1.4.2 ArrayDeque 与 LinkedList 的区别
@ -357,7 +357,7 @@ Output
- `ArrayDeque` 插入时可能存在扩容过程, 不过均摊后的插入操作依然为 O(1)。虽然 `LinkedList` 不需要扩容,但是每次插入数据时均需要申请新的堆空间,均摊性能相比更慢。 - `ArrayDeque` 插入时可能存在扩容过程, 不过均摊后的插入操作依然为 O(1)。虽然 `LinkedList` 不需要扩容,但是每次插入数据时均需要申请新的堆空间,均摊性能相比更慢。
从性能的角度上,选用 `ArrayDeque` 实现队列要比 `LinkedList` 更好。此外,`ArrayDeque` 也可以用于实现栈。 从性能的角度上,选用 `ArrayDeque` 实现队列要比 `LinkedList` 更好。此外,`ArrayDeque` 也可以用于实现栈。
### 1.4.3 说一说 PriorityQueue ### 1.4.3 说一说 PriorityQueue
@ -368,9 +368,9 @@ Output
- `PriorityQueue` 利用了二叉堆的数据结构来实现的,底层使用可变长的数组来存储数据 - `PriorityQueue` 利用了二叉堆的数据结构来实现的,底层使用可变长的数组来存储数据
- `PriorityQueue` 通过堆元素的上浮和下沉,实现了在 O(logn) 的时间复杂度内插入元素和删除堆顶元素。 - `PriorityQueue` 通过堆元素的上浮和下沉,实现了在 O(logn) 的时间复杂度内插入元素和删除堆顶元素。
- `PriorityQueue` 是非线程安全的,且不支持存储 `NULL``non-comparable` 的对象。 - `PriorityQueue` 是非线程安全的,且不支持存储 `NULL``non-comparable` 的对象。
- `PriorityQueue` 默认是小顶堆,可以接收一个`Comparator`作为构造参数来比较队列中元素的优先级 - `PriorityQueue` 默认是小顶堆,但可以接收一个 `Comparator` 作为构造参数,从而来自定义元素优先级的先后
`PriorityQueue` 在面试中可能更多的会出现在手撕算法的时候典型例题包括堆排序、求第K大的数、带权图的遍历等所以需要会熟练使用才行。 `PriorityQueue` 在面试中可能更多的会出现在手撕算法的时候典型例题包括堆排序、求第K大的数、带权图的遍历等所以需要会熟练使用才行。
## 1.5. Map 接口 ## 1.5. Map 接口