Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

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

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

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

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

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

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

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

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

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

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

    alexandrage Администратор

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

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

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

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

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


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

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

    Баллы:
    11
    Имя в Minecraft:
    FirstException
    Сортировка используется в Bukkit.[DOUBLEPOST=1488696727,1488696532][/DOUBLEPOST]
    Вернее при написании топа.
     
  9. 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;
    }
     
  10. Blc_Dragon

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

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

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

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

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

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

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

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

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

    Вложения:

  14. Larin

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

    Баллы:
    103
    Он совсем тупой, не помогайте ему, пусть гуглит, пора уже выгонять рак с этого форума.
     
  15. 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;
        }
     
  16. Blc_Dragon

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

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    +1

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

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

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

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

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

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

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

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

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

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