1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем ItzFirstException, 5 мар 2017.

  1. Автор темы
    ItzFirstException

    ItzFirstException Новичок Пользователь

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

    Вывести нужно имя игрока и число(Уровень).
    За ранее спасибо :)
     
  2. Blc_Dragon

    Blc_Dragon Активный участник Пользователь

    Баллы:
    76
    Хеш мап является java классом, т.е. не Bukkit API. такой вопрос можно спокойно задать на форумах по java. а тут вопросы по Bukkit API
     
  3. Exception_Prototype

    Exception_Prototype Активный участник Пользователь

    Баллы:
    96
    Подобные вопросы сюда
    ru.stackoverflow.com
    Вопрос КОРРЕКТНО описал, метки выставил и ждёшь что скажут. Там на много больше людей глянут и посоветуют.
     
  4. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Колекция.сорт() А уж там сам решишь по какому значению сортировать.
     
  5. Автор темы
    ItzFirstException

    ItzFirstException Новичок Пользователь

    Баллы:
    11
    Имя в Minecraft:
    FirstException
    Ну мне нужно сортировку игроков и взять игрока с высшим уровнем.
     
  6. Blc_Dragon

    Blc_Dragon Активный участник Пользователь

    Баллы:
    76
    Ты слепой, глупый, или все сразу?


     
  7. Автор темы
    ItzFirstException

    ItzFirstException Новичок Пользователь

    Баллы:
    11
    Имя в Minecraft:
    FirstException
    Сортировка используется в Bukkit.
    Вернее при написании топа.
     
  8. gamerforEA

    gamerforEA Старожил Пользователь

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    Это вернёт отсортированный словарь, в начале которого будут игроки с самым высоким уровнем:
    Код:
    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;
    }
     
  9. Blc_Dragon

    Blc_Dragon Активный участник Пользователь

    Баллы:
    76
    String.replace тоже используется, но людей, которые бы спрашивали про это, тут нет.
     
  10. Автор темы
    ItzFirstException

    ItzFirstException Новичок Пользователь

    Баллы:
    11
    Имя в Minecraft:
    FirstException
    Как мне использовать и просортировать мой список? Вытянув игрока в начале?
    upload_2017-3-5_12-23-10.png

    Не знаю, что дальше делать :(
     
  11. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Перебрать Map'ы можно при помощи Map.Entry:
    for (Map.Entry<String, Integer> entry : getSorted())
    player.sendMessage(entry.getKey() + " - " + entry.getValue());
    Можно выпендриться и применить StringBuilder, дабы отправить всё в одном пакете. Но не особо важно...
     
  12. Автор темы
    ItzFirstException

    ItzFirstException Новичок Пользователь

    Баллы:
    11
    Имя в Minecraft:
    FirstException
    Вот так. Но мне не нужно регистрировать лист, у меня уже есть зарегестрированный.
    UP
     

    Вложения:

  13. Larin

    Larin Старожил Пользователь

    Баллы:
    103
    Он совсем тупой, не помогайте ему, пусть гуглит, пора уже выгонять рак с этого форума.
     
  14. CatCoder

    CatCoder Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    CatCoder
    Вот упрощенный вариант, только нужен еще один класс :D


    Код:
        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;
        }
     
  15. Blc_Dragon

    Blc_Dragon Активный участник Пользователь

    Баллы:
    76
    +1

    (помнится таким же раньше был. помню так же, как ты меня так же в гугл и погнал. [за это отдельное спасибо])
    ммм, стрим апи. давно зубесы на него точу. все никак на jdk 1.8 не залезу. хосты уже нормально его поддерживют? а то я помню minor постоянно раньше хватал
     
  16. gamerforEA

    gamerforEA Старожил Пользователь

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    Не очень понял суть вопроса, но отвечу: StreamAPI работает отлично, Java 8 сейчас стоит у большинства пользователей.
     
  17. AtomicInteger

    AtomicInteger Активный участник Пользователь

    Баллы:
    76
    В марте уже 9 должна быть, если на поезд успеют.
     
  18. gamerforEA

    gamerforEA Старожил Пользователь

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    Java 9 уже давно доступна, а релиз будет в июле.
     
  19. AtomicInteger

    AtomicInteger Активный участник Пользователь

    Баллы:
    76
    Уже в июле?Ах, да, перенесли, опять.
     

Поделиться этой страницей