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

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

Discussion in 'Разработка плагинов для новичков' started by ItzFirstException, Mar 5, 2017.

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

    Trophy Points:
    11
    Имя в Minecraft:
    FirstException
    Сортировка используется в Bukkit.[DOUBLEPOST=1488696727,1488696532][/DOUBLEPOST]
    Вернее при написании топа.
     
  9. gamerforEA

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

    Trophy Points:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    Это вернёт отсортированный словарь, в начале которого будут игроки с самым высоким уровнем:
    Code:
    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 Активный участник Пользователь

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

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

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

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

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

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

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

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

    Attached Files:

  14. Larin

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

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

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

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


    Code:
        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 Активный участник Пользователь

    Trophy Points:
    76
    Имя в Minecraft:
    Blc_Dragon
    +1

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

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

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

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

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

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

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

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

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

Share This Page