Skip to content

Commit 0e84345

Browse files
authored
Update java-collection-questions-02.md
解释实现 NavigableMap 接口让 TreeMap 具备元素搜索能力原理
1 parent 8da9f9e commit 0e84345

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

docs/java/collection/java-collection-questions-02.md

+14
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,20 @@ head:
7979
![TreeMap 继承关系图](https://oss.javaguide.cn/github/javaguide/java/collection/treemap_hierarchy.png)
8080

8181
实现 `NavigableMap` 接口让 `TreeMap` 有了对集合内元素的搜索的能力。
82+
```
83+
实现 NavigableMap 接口让 TreeMap 具备元素搜索能力
84+
`TreeMap` 是一种基于红黑树的 NavigableMap 实现,它存储的元素是有序的。实现 `NavigableMap` 接口使 `TreeMap` 具备了对集合内元素的高效搜索能力,提供了丰富的方法来探索和操作键值对。
85+
以下是实现 `NavigableMap` 接口为 `TreeMap` 带来的几个搜索相关的能力:
86+
1. **定向搜索**:
87+
- `NavigableMap` 接口提供了 `ceilingEntry()`, `floorEntry()`, `higherEntry()`, 和 `lowerEntry()` 等方法,可以用于定位大于、小于、大于等于、小于等于给定键的最接近的键值对。
88+
2. **子集操作**:
89+
- 可以通过 `subMap()`, `headMap()`, 和 `tailMap()` 方法高效地创建原集合的子集视图,而无需复制整个集合。
90+
3. **逆序视图**:
91+
- `descendingMap()` 方法返回一个逆序的 `NavigableMap` 视图,使得可以反向迭代整个 `TreeMap`。
92+
4. **边界操作**:
93+
- 提供了 `firstEntry()`, `lastEntry()`, `pollFirstEntry()`, 和 `pollLastEntry()` 等方法来方便地访问和移除元素。
94+
这些方法都是基于红黑树数据结构的属性实现的,红黑树保持平衡状态,从而保证了搜索操作的时间复杂度为 O(log n),这让 `TreeMap` 成为了处理有序集合搜索问题的强大工具。
95+
```
8296

8397
实现`SortedMap`接口让 `TreeMap` 有了对集合中的元素根据键排序的能力。默认是按 key 的升序排序,不过我们也可以指定排序的比较器。示例代码如下:
8498

0 commit comments

Comments
 (0)