【发布时间】:2014-11-07 11:58:04
【问题描述】:
TreeMap 具有 O(log n) 性能(最佳情况),但是,因为我需要以下 operations 有效:
- 获取最高元素
- 获取 XY 最高元素
- 插入
其他可能性是使用以下内容创建PriorityQueue:
- 使用“
index”元素作为优先队列的顺序 - equals 实现只检查“索引”元素是否相等
但这将是一个 hack,因为“equals”方法容易出错(如果在
PriorityQueue之外使用)。
有更好的结构吗?
下面的更多细节你可能会跳过,因为第一个答案为这个细节提供了很好的答案,但是,我在理论讨论中保持活跃。
注意:我可以使用非标准数据结构,在这个项目中我已经在使用UnrolledLinkedList,因为它很可能是其他用途最有效的结构。
这是一个用例(如果你感兴趣的话):我正在为一个电脑游戏构建人工智能
OffensiveNessHistory myOffensiveNess = battle.pl[orderNumber].calculateOffensivenessHistory();
可能的实现:
public class OffensiveNessHistory {
PriorityQueue<OffensiveNessHistoryEntry> offensivenessEntries = new PriorityQueue<OffensiveNessHistoryEntry>();
..
或
public class OffensiveNessHistory {
TreeMap<Integer, OffensiveNessHistoryEntry> offensivenessEntries = new TreeMap();
..
我想检查第一名球员的进攻和防守历史,以计算出我应该打出最具进攻性还是防守性的预测。
【问题讨论】:
-
您说的是
Map,但是键和值应该是什么? -
补充说抱歉,保留理论意见的问题。
标签: java data-structures