如何排序HashMap,值是整数.我想从高到低排序



那么,我需要排序一个"scores"hashmap。hashmap布局是hashmap <Player,>

)如果你问为什么?这是因为我需要制作一个排行榜。

下面是我的代码:
public static Player[] sortPlayersByElo() {
Map<String, Object> map = RankingConfig.get().getConfigurationSection("data").getValues(false);
Map<Player, Integer> eloMap = new HashMap<>(); // Here is the map i need to sort.
for (String s : map.keySet()) {
Player player = Bukkit.getPlayer(s);
eloMap.put(player, RankingConfig.get().getInt("data."+s+".elo"));
}

Player[] players = new Player[eloMap.size()];
return players;
}

您可以使用Comparator.comparingInt按正确的顺序排序。流可以用来对新的Map进行排序并收集到一个LinkedHashMap以保持新的顺序。

Map<Player, Integer> result = eloMap.entrySet().stream()
.sorted(Comparator.comparingInt(Map.Entry::getValue))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, 
(a,b)->b, LinkedHashMap::new));

最新更新