那么,我需要排序一个"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));