Помогите Сортировка HashMap.

ItzFirstException

Новичок
Пользователь
Баллы
11
Имя в Minecraft
FirstException
Помогите пожалуйста сделать сортировку для такого листа:
public static HashMap<String, Integer> levels = new HashMap();

Вывести нужно имя игрока и число(Уровень).
За ранее спасибо :)
 
Хеш мап является java классом, т.е. не Bukkit API. такой вопрос можно спокойно задать на форумах по java. а тут вопросы по Bukkit API
 
Подобные вопросы сюда
ru.stackoverflow.com
Вопрос КОРРЕКТНО описал, метки выставил и ждёшь что скажут. Там на много больше людей глянут и посоветуют.
 
Колекция.сорт() А уж там сам решишь по какому значению сортировать.
 
Ну мне нужно сортировку игроков и взять игрока с высшим уровнем.
Ты слепой, глупый, или все сразу?


Хеш мап является java классом, т.е. не Bukkit API. такой вопрос можно спокойно задать на форумах по java. а тут вопросы по Bukkit API
Подобные вопросы сюда
ru.stackoverflow.com
Вопрос КОРРЕКТНО описал, метки выставил и ждёшь что скажут. Там на много больше людей глянут и посоветуют.
 
Это вернёт отсортированный словарь, в начале которого будут игроки с самым высоким уровнем:
Java:
public static LinkedHashMap<String, Integer> getSorted(Map<String, Integer> levels)
{
   LinkedHashMap<String, Integer> map = new LinkedHashMap<>();
   levels.entrySet().stream().sorted((e1, e2) -> -e1.getValue().compareTo(e2.getValue())).forEach(e -> map.put(e.getKey(), e.getValue()));
   return map;
}
 
Это вернёт отсортированный словарь, в начале которого будут игроки с самым высоким уровнем:
Java:
public static LinkedHashMap<String, Integer> getSorted(Map<String, Integer> levels)
{
   LinkedHashMap<String, Integer> map = new LinkedHashMap<>();
   levels.entrySet().stream().sorted((e1, e2) -> -e1.getValue().compareTo(e2.getValue())).forEach(e -> map.put(e.getKey(), e.getValue()));
   return map;
}
Как мне использовать и просортировать мой список? Вытянув игрока в начале?
upload_2017-3-5_12-23-10.png

Не знаю, что дальше делать :(
 
Как мне использовать и просортировать мой список?
Перебрать Map'ы можно при помощи Map.Entry:
for (Map.Entry<String, Integer> entry : getSorted())
player.sendMessage(entry.getKey() + " - " + entry.getValue());
Можно выпендриться и применить StringBuilder, дабы отправить всё в одном пакете. Но не особо важно...
 
Вот так. Но мне не нужно регистрировать лист, у меня уже есть зарегестрированный.
UP
 

Вложения

  • upload_2017-3-5_12-56-9.png
    upload_2017-3-5_12-56-9.png
    13,8 КБ · Просмотры: 10
Он совсем тупой, не помогайте ему, пусть гуглит, пора уже выгонять рак с этого форума.
 
Это вернёт отсортированный словарь, в начале которого будут игроки с самым высоким уровнем:

Вот упрощенный вариант, только нужен еще один класс :D


JavaScript:
    public static Map<String, Integer> getOrdered(List<ScoreRecord> levels) {
        Map<String, Integer> sorted = levels.stream().sorted((o1, o2) -> Ints.compare(o2.getScore(), o1.getScore()))
                .collect(Collectors.toMap(ScoreRecord::getName, ScoreRecord::getScore));
        return sorted;
    }

    @Getter
    @AllArgsConstructor
    public static class ScoreRecord {
        private String name;
        private int score;
    }
 
Он совсем тупой, не помогайте ему, пусть гуглит, пора уже выгонять рак с этого форума.
+1

(помнится таким же раньше был. помню так же, как ты меня так же в гугл и погнал. [за это отдельное спасибо])
Это вернёт отсортированный словарь, в начале которого будут игроки с самым высоким уровнем:
Java:
public static LinkedHashMap<String, Integer> getSorted(Map<String, Integer> levels)
{
   LinkedHashMap<String, Integer> map = new LinkedHashMap<>();
   levels.entrySet().stream().sorted((e1, e2) -> -e1.getValue().compareTo(e2.getValue())).forEach(e -> map.put(e.getKey(), e.getValue()));
   return map;
}
ммм, стрим апи. давно зубесы на него точу. все никак на jdk 1.8 не залезу. хосты уже нормально его поддерживют? а то я помню minor постоянно раньше хватал
 
Не очень понял суть вопроса, но отвечу: StreamAPI работает отлично, Java 8 сейчас стоит у большинства пользователей.
 
+1

(помнится таким же раньше был. помню так же, как ты меня так же в гугл и погнал. [за это отдельное спасибо])

ммм, стрим апи. давно зубесы на него точу. все никак на jdk 1.8 не залезу. хосты уже нормально его поддерживют? а то я помню minor постоянно раньше хватал
В марте уже 9 должна быть, если на поезд успеют.
 
Java 9 уже давно доступна, а релиз будет в июле.
 
Назад
Верх