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

Помогите Получить игрока, который находится на n месте по очкам.

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

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

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

    Баллы:
    21
    Имя в Minecraft:
    xChupa
    Всем привет!
    Нужна ваша помощь. В файл заносятся данные:
    Код:
    players:
      vasya:
        points: 40
      petr:
        points: 60
      stas:
        points: 20
    
    Как получить того, кто будет находиться, допустим, на 2 месте по очкам?
     
  2. reZero

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

    Баллы:
    76
    Сортировка, не?
     
  3. WhileInside

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

    Баллы:
    66
    Имя в Minecraft:
    WhileInside
    Наверное можно сделать проще, но вот:
    Код:
    class PointsTest {
    
        @Test
        void testIt() {
            // Map <Name, Points>
            Map<String, Integer> map = new HashMap<>();
            map.put("Noob", -1);
            map.put("Best player ever", 500);
            map.put("Good player", 250);
            map.put("Noname", 25);
            map.put("Admin", 1337228);
            map.put("Admin's friend", 1337228);
    
            // Reversing map
    
            Multimap<Integer, String> reversedMultimap = ArrayListMultimap.create();
    
            map.forEach((name, points) -> reversedMultimap.put(points, name));
    
            // Sorting
    
            List<Collection<String>> sortedList = reversedMultimap.asMap().entrySet()
                    .stream()
                    .sorted(Comparator.<Map.Entry<Integer, Collection<String>>>comparingInt(Map.Entry::getKey).reversed())
                    .map(Map.Entry::getValue)
                    .collect(Collectors.toList());
    
            // Except
    
            List<Collection<String>> exceptSortedList = new ArrayList<>();
            exceptSortedList.add(Arrays.asList("Admin", "Admin's friend"));
            exceptSortedList.add(Collections.singletonList("Best player ever"));
            exceptSortedList.add(Collections.singletonList("Good player"));
            exceptSortedList.add(Collections.singletonList("Noname"));
            exceptSortedList.add(Collections.singletonList("Noob"));
    
            assertEquals(exceptSortedList, sortedList);
        }
    }
    
    sortedList.get(1) -> игроки на втором месте

    Screenshot_20190418_123925.png
     
  4. Автор темы
    Chupaaa

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

    Баллы:
    21
    Имя в Minecraft:
    xChupa
    Спасибо большое!
     

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