如何基于嵌套对象的多个比较进行流排序?

问题描述 投票:0回答:1

模型示例:

我需要根据驾驶员的性别以及其年龄对汽车流进行分类。

public class Car {

    String color;
    Driver driver;

}
public class Driver {

    String name;
    Integer age;
    String gender;

}
    public List<Car> sortCars(List<Car> cars) {
        return cars.stream()
            .sorted(Comparator
                    .comparing(car -> -1 /* car.getDriver().getGender() */ )
                    .thenComparing(car -> -1 /* car.getDriver().getAge() */ ))
            .collect(Collectors.toList());
    }

我不想创建特殊的Comparator类或实现Comparator接口。我的用例有可能吗?我过去一个小时一直在浏览,所以没有任何答案。

java collections stream
1个回答
0
投票

可能类型推断不够字符串。这对我有用:

returns cars.stream()
        .sorted(Comparator.comparing(car -> ((Car) car).getDriver().getGender())
                .thenComparingInt(car -> ((Car) car).getDriver().getAge()))
        .collect(Collectors.toList());
© www.soinside.com 2019 - 2024. All rights reserved.