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

在Java中,对对象列表进行排序最优雅的方法是什么?,java,lambda,java-8,Java,Lambda,Java 8,我有以下java类: public class Customer { private long id; public long getId() { return id; } } 我还有一个客户名单。使用lambda表达式按Customer.getId()对列表进行排序最优雅的方法是什么 现在我有这个代码: Comparator<Customer> customerComparator = (previousCustomer, nextCus

我有以下java类:

public class Customer {
    private long id;

    public long getId() {
        return id;
    }
}
我还有一个
客户名单
。使用lambda表达式按
Customer.getId()
对列表进行排序最优雅的方法是什么

现在我有这个代码:

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

customers.sort(customerComparator);
Comparator customer Comparator=(上一个客户,下一个客户)->
Long.compare(previousCustomer.getId(),nextCustomer.getId());
customers.sort(customerComparator);

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

在Java 8中,可以用一行代码来编写

customers.sort((a, b) -> Long.compare(a.getId(), b.getId());
如果您让
客户实现可比性
,您可以

customers.sort(Customer::compare);


使用Lambda表达式对列表进行排序


我想您可能正在寻找比较器。比较…()方法:

customers.sort(comparingLong(Customer::getId))

内联
customerComparator
变量==>一行代码。在
Customer
类中实现
compariable
并使用
Collections.sort(customers)
是否更好?如果不必使用lambdap,请检查方法引用[trailYou can use
customers.sort(Customer::compare);
如果类
Customer
有一个
compare
方法,则不必为此实现任何特定的接口。
customers.sort((c1, c2) -> Long.compare(c1.getId(),c2.getId()));
customers.sort(comparingLong(Customer::getId))