Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / TreeMap со своим Comparator через Лямбда-выражение / 12 сообщений из 12, страница 1 из 1
18.11.2017, 23:47
    #39555592
Molasar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeMap со своим Comparator через Лямбда-выражение
Всем привет!

Есть TreeMap сортирующий по ключу в обратном порядке:

Код: 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.
package mapsorttest06;
 
import java.util.Comparator;
import java.util.Map;
import java.util.TreeMap;
 
public class MapSortTest06 {
 
    public static void main(String[] args) {
        
        Map<Integer, String> treeMap = new TreeMap(
            new Comparator<Integer>() {
 
                @Override
                public int compare(Integer o1, Integer o2) {
                    return o2.compareTo(o1);
                }
        });
        
        treeMap.put(2, "Nick");
        treeMap.put(3, "Boris");
        treeMap.put(1, "Anton");
 
        System.out.println("Sorted treeMap: " + treeMap);
    }
 
}


Как правильно построить Лямбда- выражение при объявлении treeMap и переопределении compare в выше приведенном примере?

Мой вариант с лямбда не работает:
Код: java
1.
2.
Map<Integer, String> treeMap = new TreeMap(
            (Integer o1, Integer o2) -> o2.compareTo(o1));
...
Рейтинг: 0 / 0
19.11.2017, 05:38
    #39555612
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeMap со своим Comparator через Лямбда-выражение
MolasarКак правильно построить Лямбда- выражение при объявлении treeMap и переопределении compare в выше приведенном примере?
Код: java
1.
Map<Integer, String> treeMap = new TreeMap<>((o1, o2) -> o2.compareTo(o1));
...
Рейтинг: 0 / 0
19.11.2017, 10:50
    #39555628
pavel_nv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeMap со своим Comparator через Лямбда-выражение
Не нужны тут лямбды, используйте method reference
Код: java
1.
String::compareTo
...
Рейтинг: 0 / 0
19.11.2017, 11:09
    #39555633
Valery Shiskin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeMap со своим Comparator через Лямбда-выражение
pavel_nv,

А String причем?
...
Рейтинг: 0 / 0
19.11.2017, 11:18
    #39555637
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeMap со своим Comparator через Лямбда-выражение
MolasarЕсть TreeMap сортирующий по ключу в обратном порядке:

Comparator. reverse ()? Не ни знаю такова.
...
Рейтинг: 0 / 0
19.11.2017, 11:18
    #39555638
Valery Shiskin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeMap со своим Comparator через Лямбда-выражение
pavel_nv,

Понимаю, Вы просто ошиблись, но суть верная и в данном случае у Вас самое красивое решение

Map<Integer, String> treeMap = new TreeMap(Integer::compareTo);
...
Рейтинг: 0 / 0
19.11.2017, 11:20
    #39555639
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeMap со своим Comparator через Лямбда-выражение
Valery Shiskin
Код: java
1.
Map<Integer, String> treeMap = new TreeMap(Integer::compareTo);


И, конечно же, всем плевать что ТС нужен обратный компаратор?
...
Рейтинг: 0 / 0
19.11.2017, 11:24
    #39555640
Valery Shiskin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeMap со своим Comparator через Лямбда-выражение
Valery Shiskin,
Но с учетом обратного порядка сортировки, наверное:

Код: java
1.
Map<Integer, String> treeMap = new TreeMap<>(Comparator.reverseOrder());
...
Рейтинг: 0 / 0
19.11.2017, 11:25
    #39555641
Valery Shiskin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeMap со своим Comparator через Лямбда-выражение
Blazkowicz,

Согласен. Уже исправился
...
Рейтинг: 0 / 0
19.11.2017, 15:56
    #39555717
Molasar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeMap со своим Comparator через Лямбда-выражение
Usman, спасибо за ответ.
Вы единственный, кто понял суть вопроса.

А что даёт в данном примере добавление <>?

Я пользуюсь NetBeans и при объявлении коллекций никогда не указываю пустые <>.
...
Рейтинг: 0 / 0
19.11.2017, 16:01
    #39555718
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeMap со своим Comparator через Лямбда-выражение
MolasarА что даёт в данном примере добавление <>?это т.н. "бриллиантовый оператор" MolasarЯ пользуюсь NetBeans и при объявлении коллекций никогда не указываю пустые <>. Ошибка десятая: использование сырых типов (raw type) вместо параметризованных
...
Рейтинг: 0 / 0
19.11.2017, 16:46
    #39555730
Molasar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeMap со своим Comparator через Лямбда-выражение
Usman, Большое спасибо! Разобрался!
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / TreeMap со своим Comparator через Лямбда-выражение / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]