我们如何编写Lambda表达式语句
Collections.sort(list,(a1,a2) -> (a1.getName().compareTo(a2.getName())));
将其转换为方法引用?
Collections.sort(list, Comparator.comparing(Item::getName));
list.sort(Comparator.comparing(Item::getName));
记住,Lambda表达式基本上是由函数接口定义的单个方法的实现。
除了方法名称之外,具有匹配签名的任何方法都可以被引用,以代替Lambda表达式。
在您的情况下,它是Comparator<? super T>
接口和它的int compare(T o1, T o2)
方法,因此任何返回int
并且接受集合元素类型的两个参数的方法都可以使用。
因此,如果您的列表是List<Person>
,则像这样的任何方法都可以工作,而不管方法名称:
public static int xxx(Person p1, Person p2) { ... }
该方法可以具有任何可见性(public、private等),并且不必是静态的。