获取Hashmap前3个键

f3d*_*d0r 0 java foreach integer character hashmap

我有一个hashmap存储文本中出现的字符数.我正在尝试打印前三次出现,但打印不正确.

int max = 1000000000;
for (int i = 1; i <= 3; i++) {
    for (Character key : list.keySet()) {
        if (list.get(key) < max) {
            max = list.get(key);
            System.out.println(i + ": " + key + " " + list.get(key));
            break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

ass*_*ias 8

使用Java 8,您可以使用下面的代码(*):

List<Entry<Character, Integer>> top3 = map.entrySet().stream()
                                    .sorted(comparing(Entry::getValue, reverseOrder()))
                                    .limit(3)
                                    .collect(toList());
Run Code Online (Sandbox Code Playgroud)

(*)具有以下导入:
import static java.util.Comparator.comparing;
import static java.util.Comparator.reverseOrder;
import static java.util.stream.Collectors.toList;