在Java中,对对象列表进行排序最优雅的方法是什么?
我有以下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
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 usecustomers.sort(Customer::compare);
如果类Customer
有一个compare
方法,则不必为此实现任何特定的接口。
customers.sort((c1, c2) -> Long.compare(c1.getId(),c2.getId()));
customers.sort(comparingLong(Customer::getId))