キーと値のペアを取得するには、Map.Entry<String, Integer>
を使用する必要があります。
values()
メソッドは値のみを返しますが、keySet()
メソッドはキーのみを返します。
まず、値に基づいてマップをソートして、上位5つの結果を取得する必要があります。 直接的なアプローチはComparator
を使用します。詳細については、hereの回答を参照してください。
次に、map.getEntrySet()
の最初の5つのエントリを取得します。これにはIterator
を使用する方が簡単です。
UPDATE:
Set<Entry<String, Integer>> set = wordCount.entrySet();
List<Entry<String, Integer>> list = new ArrayList<Entry<String, Integer>>(set);
Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
return o2.getValue().compareTo(o1.getValue());
}
});
int topResults = 5;
Iterator<Entry<String, Integer>> iter = list.iterator(); //refer the sorted collection
while (iter.hasNext() && topResults > 0) {
Map.Entry<String, Integer> entry = iter.next();
System.out.println(entry.getKey() + "->" + entry.getValue());
topResults --;
}
'地図<文字列、整数>は'あなたのコードは唯一の値は最初の5つの値のためにあるものを伝えますWORDCOUNT – kwolff7