File tree Expand file tree Collapse file tree 1 file changed +5
-41
lines changed Expand file tree Collapse file tree 1 file changed +5
-41
lines changed Original file line number Diff line number Diff line change 142142```
143143
144144![ ] ( 13_4.png )
145+
145146图` 13-5 ` 。` NavigableSet `
146147
147148这些类似于 ` Deque ` 中同名的方法(参见 ` 14.4 ` 节),并且有助于支持在需要队列功能的应用程序中使用 ` NavigableSet ` 。 例如,在本节中待办事项管理器的版本中,我们可以通过以下方式从列表中获取最高优先级的任务:准备好执行的任务:
213214```
214215
215216![ ] ( 13_5.png )
217+
216218图 ` 13-6 ` 。一个有序的,平衡的二叉树
217219
218220如果迭代处理涉及对集合的结构更改,并且正在使用的实现是 ` TreeSet ` (它具有快速迭代器),那么我们将不得不使用显式迭代器来避免 ` ConcurrentModificationException ` :
235237在计算中,树是代表层次结构的分支结构。计算机树从系谱树中借用了很多术语,虽然有一些差异;最重要的是,在计算树中,每个节点只有一个父节点(除了没有的根节点)。在计算中经常使用的一类重要的树是二叉树 - 每个节点最多可以有两个孩子。图13-6显示了一个按照字母顺序包含这个句子的单词的二叉树的例子。
236238
237239![ ] ( 13_6.png )
240+
238241图 ` 13-7 ` 。 一个不平衡的二叉树
239242
240243如果您查看任何非叶节点(例如,包含以下单词的节点),则可以看到此树的最重要属性:左侧下方的所有节点都包含按字母顺序排列的单词,右侧的所有单词随之而来。要找到一个单词,您需要逐级开始,逐级下降,在每个级别进行字母比较,因此检索或插入元素的成本与树的深度成正比。
282285### ConcurrentSkipListSet
283286
284287![ ] ( 13_7.png )
288+
285289图 ` 13-8 ` 。 修改链接列表
286290
287291![ ] ( 13_8.png )
292+
288293图 ` 13-9 ` 。 搜索跳过列表
289294
290295` ConcurrentSkipListSet ` 作为第一个并发集合实现在 ` Java 6 ` 中引入。它由跳过列表支持,跳过列表是上一节二叉树的现代替代方案。一个集合的跳过列表是一系列链表,每个链表都是由两个字段组成的一连串单元格:一个用于保存一个值,另一个用于保存对下一个单元格的引用。通过指针重新排列,元素在常量时间内插入和移出链表,如图 ` 13-8 ` 部分(` a ` )和(` b ` )所示。
311316在 ` EnumSet ` 实现中,对于多于 ` 64 ` 个值的枚举类型,下一个最坏情况下的复杂度为 ` O(log m) ` ,其中 ` m ` 是枚举中元素的数量。
312317
313318
314-
315-
316-
317-
318-
319-
320-
321-
322-
323-
324-
325-
326-
327-
328-
329-
330-
331-
332-
333-
334-
335-
336-
337-
338-
339-
340-
341-
342-
343-
344-
345-
346-
347-
348-
349-
350-
351-
352-
353-
354-
You can’t perform that action at this time.
0 commit comments