【发布时间】:2015-08-13 15:43:58
【问题描述】:
我正在尝试为大量玩家存储分数。所以我需要一张根据值排序的地图,但由于玩家数量众多,每次检索它时对其进行排序是低效的。我还希望能够在地图中找到玩家排名。它与 redis 中的 score 数据类型非常相似。 比如:
ScoreMap<String, Integer> scores = new ScoreMap<String, Integer>();
scores.put("Bill", 2);
scores.put("Tom", 6);
scores.put("Jim", 3);
scores.put("Jake", 3);
System.out.println("Rank = " + scores.getRank("Bill"));
System.out.println();
System.out.println("All:");
for (Entry<String, Integer> entry : scores.entrySet()) {
System.out.println(entry.getKey() + " => " + entry.getValue());
}
System.out.println();
System.out.println("Rank Range:");
for (Entry<String, Integer> entry : scores.entryRankRange(0, 2)) {
System.out.println(entry.getKey() + " => " + entry.getValue());
}
System.out.println();
System.out.println("Score Range:");
for (Entry<String, Integer> entry : scores.entryScoreRange(2, 3)) {
System.out.println(entry.getKey() + " => " + entry.getValue());
}
这会返回
Rank = 3
All:
Tom => 6
Jake => 3
Jim => 3
Bill => 2
Rank Range:
Tom => 6
Jake => 3
Jim => 3
Score Range:
Jake => 3
Jim => 3
Bill => 2
我知道这有点具体,我可能不得不制作一个自定义数据结构。但是,在正确的方向上的一点将不胜感激。 :)
【问题讨论】:
标签: java data-structures