Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 31.01.2018
Сообщений: 207
1

Как отсортировать Map по значению

28.06.2018, 12:17. Просмотров 505. Ответов 12
Метки нет (Все метки)

Ребятки всем добра! Подскажите как отсортировать Map по значению.
Что имеется в виду! Есть карта строк и список игроков.
Java
1
private Map<String, HashSet<Player>> arrayListMap = new HashMap<>();
У игроков есть поле рейтинг.

Java
1
2
public class Player
  private int rating;
Так вот, подскажите как отсортировать игроков в КАРТЕ по рейтингу!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.06.2018, 12:17
Ответы с готовыми решениями:

Как отсортировать map по значению?
Задача: Ввести с консоли n целых чисел. На консоль вывести: Числа в порядке убывания частоты...

Как отсортировать карту( Map<String, Long> ) сначала по значениям, а потом по ключу
Добрый вечер. Интересует вопрос как отсортировать карту(Map&lt;String, Long&gt;) сначала по значениям,...

Отсортировать контейнер map по значению элементов
Есть заполненный контейнер unordered_map (ну или просто map) Нужно отсортировать его по значению...

Как получить индекс по значению map
std::map&lt;string, string&gt; m {{&quot;123&quot;, &quot;shit&quot;}, {&quot;321&quot;, &quot;govno&quot;}, {&quot;234&quot;, &quot;curva&quot;}}; return...

12
Автоматизируй это!
Эксперт Python
3174 / 2060 / 673
Регистрация: 30.03.2015
Сообщений: 7,254
Записей в блоге: 1
28.06.2018, 12:26 2
это не карта) это словарь, таблица, ассоциативный массив, отображение, но не карта. Ну не слышал, чтобы картой называли.

Цитата Сообщение от DEStroyerll_ Посмотреть сообщение
Есть карта строк и список игроков.
нет списка, вижу сет только

Цитата Сообщение от DEStroyerll_ Посмотреть сообщение
arrayListMap


Цитата Сообщение от DEStroyerll_ Посмотреть сообщение
Так вот, подскажите как отсортировать игроков в КАРТЕ по рейтингу!
но в твоей мапе нет игроков! посмотри внимательно там есть только МНОЖЕСТВА игроков. Ты хочешь игроков в множестве сортировать?
0
1 / 1 / 0
Регистрация: 31.01.2018
Сообщений: 207
28.06.2018, 12:29  [ТС] 3
Java
1
arrayListMap
А как бы вы правильно назвали переменную?
Список есть! Вот таким образом я его создал.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public void addPlayers(Scanner scanner) throws NullPointerException {
        String name, team;
        int age, rating;
        while (true) {
            System.out.println("Сoздайте игрока! Для выхода нажмите \"q\"");
            System.out.print("Введите имя игрока: ");
            name = scanner.next();
            if (name.equals("q")) break;
            System.out.print("Введите возраст игрока: ");
            while (!scanner.hasNextInt()) {
                System.out.print("Введите возраст игрока цифрами: ");
                scanner.next();
            }
            age = scanner.nextInt();
            System.out.print("Введите рейтинг игрока по FIFA: ");
            while (!scanner.hasNextInt()) {
                System.out.print("Введите рейтинг игрока цифрами: ");
                scanner.next();
            }
            rating = scanner.nextInt();
            System.out.print("Введите имя команды: ");
            team = scanner.next();
            if (!arrayListMap.containsKey(team)) {
                arrayListMap.put(team, new HashSet<>());
                arrayListMap.get(team).add(new Player(name, age, rating));
            } else {
                arrayListMap.get(team).add(new Player(name, age, rating));
            }
        }
        System.out.println("~~~~~~~~~~~~~~~~~~~~~~~");
        System.out.println("Игроки успешно созданы!");
        System.out.println("~~~~~~~~~~~~~~~~~~~~~~~");
    }
Добавлено через 39 секунд
Welemir1, И то скорее всего я неправильно их запихнул в МАР
0
Автоматизируй это!
Эксперт Python
3174 / 2060 / 673
Регистрация: 30.03.2015
Сообщений: 7,254
Записей в блоге: 1
28.06.2018, 12:33 4
Цитата Сообщение от DEStroyerll_ Посмотреть сообщение
Список есть! Вот таким образом я его создал.
пальчиком ткни в строку где есть список

Цитата Сообщение от DEStroyerll_ Посмотреть сообщение
А как бы вы правильно назвали переменную?
а при чем тут аррейЛист? я бы назвал teams ибо по моему там названия команд и игроки в них
0
1 / 1 / 0
Регистрация: 31.01.2018
Сообщений: 207
28.06.2018, 12:39  [ТС] 5
Welemir1, Ну вот запись
Java
1
2
3
4
5
6
if (!arrayListMap.containsKey(team)) {
                arrayListMap.put(team, new HashSet<>());
                arrayListMap.get(team).add(new Player(name, age, rating));
            } else {
                arrayListMap.get(team).add(new Player(name, age, rating));
            }
Добавление игроков в Map!
0
Автоматизируй это!
Эксперт Python
3174 / 2060 / 673
Регистрация: 30.03.2015
Сообщений: 7,254
Записей в блоге: 1
28.06.2018, 12:51 6
DEStroyerll_, я просто намекаю тебе, что листа у тебя в коде нет, это отдельная структура данных, у тебя есть сет и мап (множество и отображение).
и собственно вопрос -ты игроков в сете хочешь по рейтингу сортировать?

Добавлено через 9 минут
DEStroyerll_, вот класс игрок, метод туСтринг это для наглядности, конструктор тоже не обязательно такой, мне для простоты
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Player {
    private int rating;
    private String name;
 
    public Player(String name, int rating) {
        this.rating = rating;
        this.name = name;
    }
 
    public int getRating() {
        return rating;
    }
 
    @Override
    public String toString() {
        return String.join(" ", "Player with name", name, "and rating", String.valueOf(rating));
    }
}
а вот пример, используем множество, которое обеспечит порядок
Java
1
2
3
4
5
6
7
8
9
10
11
12
public static void main(String[] args) {
        TreeSet<Player> players = new TreeSet<>(Comparator.comparing(Player::getRating).reversed());
        Player player1 = new Player("Дзюба", 112);
        Player player2 = new Player("Онопко", 100);
        Player player3 = new Player("Мостовой", 56);
        Player player4 = new Player("Жирков", 67);
        players.add(player1);
        players.add(player2);
        players.add(player3);
        players.add(player4);
        players.forEach(System.out::println);
    }
1
2879 / 2291 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
28.06.2018, 12:58 7
просто дополнение
без реверса и сужаем до интерфейса
Java
1
Set<Player> team = new TreeSet<>(Comparator.comparingInt(p -> -p.getRating()));
1
1 / 1 / 0
Регистрация: 31.01.2018
Сообщений: 207
28.06.2018, 13:09  [ТС] 8
Парни, вы людей создаете явным способом. А я их через Scanner создавал. И теперь мне нужен метод сортировки моих людей по рейтингу! Не пойму последовательность действий!
В чем вся соль! У меня есть игроки! Они у меня в MAPe и мне нужно придумать метод, который их будет сортировать по рейтингу! Не по ключам,а взять из MAPы игроков и сортирнуть их по рейтингу!
0
Автоматизируй это!
Эксперт Python
3174 / 2060 / 673
Регистрация: 30.03.2015
Сообщений: 7,254
Записей в блоге: 1
28.06.2018, 13:14 9
DEStroyerll_, так это же пример! Создавай игроков как хочешь, главное суй их в трисет а не хешсет, все же разжевано и на кратком примере показано.

Добавлено через 36 секунд
Цитата Сообщение от DEStroyerll_ Посмотреть сообщение
Они у меня в MAPe
рррррр! нет, они у тебя в сете! в мапе у тебя ключ-стринг, занчение -множество(сет)
1
1 / 1 / 0
Регистрация: 31.01.2018
Сообщений: 207
28.06.2018, 13:22  [ТС] 10
Welemir1, Благодарю Вас))
Я неправильно выражался )) У меня Ключ - String, Value - HasSet игроков.))
А что вот эта запись дает??
Java
1
Player::getRating
0
Автоматизируй это!
Эксперт Python
3174 / 2060 / 673
Регистрация: 30.03.2015
Сообщений: 7,254
Записей в блоге: 1
28.06.2018, 13:23 11
Цитата Сообщение от DEStroyerll_ Посмотреть сообщение
А что вот эта запись дает??
получает рейтинг игрока (в классе игрок должен быть такой метод), нужно для сортировки
0
1 / 1 / 0
Регистрация: 31.01.2018
Сообщений: 207
28.06.2018, 13:33  [ТС] 12
Welemir1, Ага, значит мне нужно в классе Player сделать вот так
Java
1
public class Player implements Comparator<Player>
И переопределить метод compare
0
Автоматизируй это!
Эксперт Python
3174 / 2060 / 673
Регистрация: 30.03.2015
Сообщений: 7,254
Записей в блоге: 1
28.06.2018, 13:34 13
все я пас
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.06.2018, 13:34

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Map с поиском как по ключу, так и по значению
Реализовано ли подобное в stl? (или в boost, например) И как в теории выглядит эта реализация?...

Как отсортировать массив по первому значению?
Подскажите пожалуйста, как отсортировать этот массив по первому значению tempArray.Name? public...

Сортировка map по значению
Добрый день:) Как можно отсортировать map по возрастанию/убыванию float(неважно ключ это или...

Сортировка map по значению
Здорова господа!!! Есть массив: map&lt;string, int&gt; m; m=3; m=2; m=10; Нужно найти...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.