Java 7
List<Person> personList = Person.createShortList();
// Sort with Inner Class
Collections.sort(personList, new Comparator<Person>() {
public int compare(Person p1, Person p2) {
return p1.getSurName().compareTo(p2.getSurName());
}
});
Run Code Online (Sandbox Code Playgroud)
Java 8
Collections.sort(personList, (Person p1, Person p2) ->
p1.getSurName().compareTo(p2.getSurName()));
for (Person p : personList) {
p.printName();
}
Run Code Online (Sandbox Code Playgroud)
如果接口Comparator
有2个方法而不只是一个compare
可以使用Lambda?
例如
public interface Comparator<T> {
int compare(T o1, T o2);
int compareTest(T o1, T o2);
}
Run Code Online (Sandbox Code Playgroud)
功能接口只需要一个抽象方法,而不是您的接口.但是,您可以为其中一个方法提供默认实现.在这种情况下它会工作:
@FunctionalInterface
public interface Comparator<T> {
int compare(T o1, T o2);
default int reverseCompare(T o1, T o2) {
return compare(o2, o1);
}
}
Run Code Online (Sandbox Code Playgroud)