有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

lambda在Java中对对象列表进行排序最优雅的方式是什么?

我有以下java类:

public class Customer {
    private long id;

    public long getId() {
        return id;
    }
}

我还有一个List<Customer> customers。使用lambda表达式Customer.getId()对列表进行排序的最优雅的方式是什么

现在我有这个代码:

Comparator<Customer> customerComparator = (previousCustomer, nextCustomer) ->
        Long.compare(previousCustomer.getId(), nextCustomer.getId());

customers.sort(customerComparator);

但它感觉很笨拙,尤其是当我需要为每个不同的排序或每个不同的泛型列表编写一个比较程序时。这可以用一行代码来完成吗


共 (1) 个答案

  1. # 1 楼答案

    在Java8中,您可以在一行上编写

    customers.sort((a, b) -> Long.compare(a.getId(), b.getId());
    

    如果你做了Customer implements Comparable<Customer>,你就可以

    customers.sort(Customer::compare);
    

    或者

    customers.sort(null);