Java8 Сортировка по 2 полям, используя ссылку на метод - PullRequest
0 голосов
/ 18 октября 2018

У меня ниже класса:

public class Item {
    String name;
    double price;
    // Getters & Setters
}

Я могу сравнить, используя лямбду следующим образом:

Collections.sort(items, (Item o1, Item o2) -> {
            int result = Double.valueOf(o2.getPrice()).compareTo(o1.getPrice());
            if (result == 0) {
                return o1.getName().compareTo(o2.getName());
            }
            return result;
        });

Я хочу использовать ссылку на метод для сравнения элементов, ноЯ хочу сравнить по имени кулак, а затем, используя цену.Как мне этого добиться?

Также есть ли здесь упрощенный способ использования лямбды?

1 Ответ

0 голосов
/ 19 октября 2018

Вы можете использовать метод Comparator::comparing и Comparator::comparingDouble, чтобы легко создать отсек на лету:

List<Item> items = ...;
items.sort(Comparator.comparing(Item::getName).thenComparingDouble(Item::getPrice));
...