- PR -

プライオリティキュー

1
投稿者投稿内容
Sparrow
会議室デビュー日: 2006/08/25
投稿数: 9
投稿日時: 2006-09-03 21:13
class MyCmp implements Comparator {
public int compare(String s1, String s2) {
return s2.compareToIgnoreCase(s1);
}
}

public class JbPrioq2 {
public static void main(String[] args) {
PriorityQueue pq = new PriorityQueue(10, new MyCmp());
pq.offer("bbbb");
pq.offer("DDDD");
pq.offer("AAAA");
pq.offer("cccc");

while (pq.size() > 0) {
System.out.println(pq.poll());
}
}

}




コンパレータで順序づけするのはわかりますが、これでなんで逆辞書順になるのでしょうか?
大ベテラン
会議室デビュー日: 2006/06/28
投稿数: 116
投稿日時: 2006-09-03 21:21
MyCmpのcompareで順序を自然順序から反転させているからです。
Sparrow
会議室デビュー日: 2006/08/25
投稿数: 9
投稿日時: 2006-09-03 21:58
う〜ん?もう一つよくわかりません???
Sparrow
会議室デビュー日: 2006/08/25
投稿数: 9
投稿日時: 2006-09-03 22:45
わかりました。
MYCmpで s1がAAAAA,s2がBBBB
本来なら s1が前なのだけれど、s2.compareToIgnoreCase(s1);で逆の値を返すから、
逆さに並ぶって事ですね。

この解釈でいいのかな?
1

スキルアップ/キャリアアップ(JOB@IT)