我有以下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);
但是,如果我需要为每个不同的排序或每个不同的通用列表编写比较器,它会感到笨拙。可以用一行代码完成吗?
答案 0 :(得分:12)
我认为您可能正在寻找Comparator.comparing...()
方法:
customers.sort(comparingLong(Customer::getId))
答案 1 :(得分:10)
在Java 8中,您可以在一行上书写。
customers.sort((a, b) -> Long.compare(a.getId(), b.getId());
如果你做Customer implements Comparable<Customer>
,你可以做
customers.sort(Customer::compare);
或
customers.sort(null);
答案 2 :(得分:4)
使用 Lambda Expression
对列表进行排序customers.sort((c1, c2) -> Long.compare(c1.getId(),c2.getId()));