値に基づいてソートされた TreeMap があり、次のように出力されます。
abortion-2
able-2
ab-2
aaron-2
aaa-2
aa-2
a-2
absent-1
absence-1
abraham-1
ability-1
aberdeen-1
abc-1
しかし、同じ値を持つ単語が逆のソート順で出力されているようです:
「 a, aa, aaa, aaron, ab, できる中絶」などの代わりに、「abortion, ab, ab, aaron, aaa, aa, a 」など。
同じ値を持つキーの各セットを TreeSet に追加して出力することも考えましたが、次の値に基づいて反復できませんでした。
TreeMap に渡すコンパレータを次に示します。コードを修正して正しい順序で印刷するのを手伝ってくれる人はいますか?
public class MyComparator implements Comparator<String>{
Map<String, Integer> tiedMap;
public MyComparator(Map<String, Integer> map){
this.tiedMap = map;
}
public int compare(String a, String b){
if(tiedMap.get(a)>=tiedMap.get(b)){
return -1;
}
else
return 1;
}
}
そして、これが私がそれを印刷しようとしている方法です:
Iterator it = tree.entrySet().iterator();
for(int i=0; i<n; i++){
if(it.hasNext()){
Map.Entry pairs = (Map.Entry)it.next();
System.out.println(pairs.getKey()+"-"+pairs.getValue());
}
}
編集: 入力を TreeMap に読み込んでから、別の TreeMap に渡します。
編集: TreeMaps を作成するコード:
Map<String, Integer> map = new TreeMap<String, Integer>();
Words t = new Words();
MyComparator comp = w.(new MyComparator(map));
Map<String, Integer> tree = new TreeMap<String, Integer>(comp);
int size = Integer.parseInt(buffer.readLine());
for(int i = size; i>0; i--){
reader = buffer.readLine();
if(map.get(reader)!=null){
map.put(reader, map.get(reader)+1);
}
else
map.put(reader, 1);
}
tree.putAll(map);