Smart猫小萌
除了已经发布的内容之外,您还应该知道,从Java 8开始,我们可以缩短代码并编写如下:Collection.sort(yourList, Comparator.comparing(YourClass::getFieldToSortOn));或者因为现在的列表sort方法yourList.sort(Comparator.comparing(YourClass::getFieldToSortOn));说明:从Java 8开始,函数接口(只有一个抽象方法的接口-它们可以有更多的默认或静态方法)可以很容易地使用以下方法实现:兰巴斯 arguments -> body或方法参考 source::method.自Comparator<T>只有一个抽象方法int compare(T o1, T o2)它是功能接口。所以,而不是(例如)@BalusC 回答)Collections.sort(contacts, new Comparator<Contact>() {
public int compare(Contact one, Contact other) {
return one.getAddress().compareTo(other.getAddress());
}});我们可以将此代码简化为:Collections.sort(contacts, (Contact one, Contact other) -> {
return one.getAddress().compareTo(other.getAddress());});我们可以通过跳过来简化这个(或任何)lambda。参数类型(Java将根据方法签名推断它们)或{return ... }所以而不是(Contact one, Contact other) -> {
return one.getAddress().compareTo(other.getAddress();}我们可以写(one, other) -> one.getAddress().compareTo(other.getAddress())现在也是Comparator有类似的静态方法comparing(FunctionToComparableValue)或comparing(FunctionToValue, ValueComparator)我们可以用它轻松地创建比较器,它应该比较来自对象的一些特定值。换句话说,我们可以将上面的代码重写为Collections.sort(contacts, Comparator.comparing(Contact::getAddress)); //assuming that Address implements Comparable (provides default order).