What data structure should I use for a high score list?
Possible Duplicate:
How to sort a Map on the values in Java?
how to sort Map values by key in Java
我试图跟踪分数,我需要能够将分数分类为非升序,而不会使键和值超出范围。 我的第一个想法是使用地图,但我真的很难找到一种方法来保持地图按值排序。 值都是Integer对象。 我该如何排序这样的高分榜?
-
这篇文章似乎描述了你的问题:[stackoverflow.com/questions/109383/… [1]:stackoverflow.com/questions/109383/…
这是Microsoft /亚马逊求职面试类型的问题。
您可以使用优先级队列,在其他队列中将得分最高作为队列的第一个元素。 将节点创建为key | value对。 以分数值维护密钥顺序的方式实现它,并实现队列。
提供更多细节
这是您的Node实现:
1 2 3 4 5 6 7 8 9 10 11 12 13
| public class Node {
private String name ; // the name
private double score ; // assuming you're using double
public Node (String name, double score ){
this. name = name ;
this. score = score ; // assuming negative scores are allowed
}
public void updateScore (double score ){
this. score += score ;
}
} |
当您使用PriorityQueue时,根据得分值制作Comparison。 根据Java API,如果需要搜索/更新,则为O(1):
Implementation note: this implementation provides O(log(n)) time for
the enqueing and dequeing methods (offer, poll, remove() and add);
linear time for the remove(Object) and contains(Object) methods; and
constant time for the retrieval methods (peek, element, and size).
阅读API,我想您可能需要覆盖Comparator super E> comparator(),或至少根据您的需要进行修改。 应该这样做。
-
这是关于排序地图的问题。 PriorityQueue如何相关?
-
@Bohemian不,不是。 这是一个关于哪种数据结构最适合这项工作的问题。 OP简单地解释说他尝试使用地图,而不是他想要一个基于地图的解决方案。
-
我有点困惑的是如何使用PriorityQueue来排序整数值,同时仍然保持字符串的位置。
-
你能给我写一个小代码片吗?
-
@SaxSalute我提供了有关实现的更多细节。 你使用哪种编程语言?
-
@SaxSalute我可能会给你一些代码片段,但我需要知道你正在使用哪种编程语言。
-
我正在使用Java。
-
@SaxSalute我更新了我的问题。 我想你现在拥有完成工作所需的所有基础。