【发布时间】:2018-10-23 16:10:14
【问题描述】:
在我看来,数组最大的优点是我们可以用 O(1) 访问任何元素。但是队列只能从头部或尾部访问。
此外,PriorityBlockingQueue 是一个排序集合,这意味着每个添加操作都会导致所有较大(或较小)的元素发生移位。太贵了。
所以我不明白为什么不使用链表。
【问题讨论】:
-
看一下由数组支持的堆数据结构。
PriorityBlockingQueue应该使用类似的策略。 -
建议:搜索Implementation of Priority Queue using Heap和Implementing Min(或Max)Heap你就会知道为什么使用数组(Heap使用数组很容易实现,而且它很高效,因为它不涉及元素的移动,它只涉及分配、交换元素{不移动其他索引处的元素},以及访问已知索引处的元素以进行比较,这些操作是在数组中有效)
标签: java arrays list data-structures queue