私は a を持っており、整数の昇順でHashMap<Character, Integer>
値を a に配置したいと思います。PriorityQueue
これを行う方法を考えるのに問題があります。私はNode
値を保持できるクラスを持っているので、PriorityQueue<Node>
.
質問する
632 次
2 に答える
1
Map
この場合は使用しません。
とを保持する独自のPair
/Node
クラスを作成し、このクラスにを実装させます。Character
Integer
Comparable
Comparable
あなたはここで読むことができます。
ノードクラスではcompareTo
、次のようなメソッドを実装する必要があります。
public int compareTo(Node o) {
return this.idd - o.idd ;
}
ここで、idは整数を保持する変数です。
このように、あなたはそれらをあなたの質問で言及したSortedSet
ようなものTreeSet
に入れることができますPriorityQueue
于 2012-12-05T05:50:56.707 に答える
0
コード例:
HashMap<Character, Integer> h = new HashMap<Character, Integer>();
h.put('z',30);
h.put('e',10);
h.put('b',20);
h.put('c',20);
List<Map.Entry> a = new ArrayList<Map.Entry>(h.entrySet());
Collections.sort(a,
new Comparator() {
public int compare(Object o1, Object o2) {
Map.Entry e1 = (Map.Entry) o1;
Map.Entry e2 = (Map.Entry) o2;
return ((Comparable) e1.getValue()).compareTo(e2.getValue());
}
});
for (Map.Entry e : a) {
System.out.println(e.getKey() + " " + e.getValue());
}
出力 (OP の必要に応じて整数値で並べ替え):
e 10
b 20
c 20
z 30
于 2012-12-05T06:50:26.070 に答える