函数式接口作为方法的返回值
- 需求:定义一个类(ComparatorDemo),在类中提供两个方法
- 一个方法是:comparablegetComparator() 方法返回值Comparator是一个函数式接口
- 一个方法是主方法,在主方法调用getComparator方法
- 如果方法的返回值是一个函数式接口,我们可以使用lambda表达式作为结果返回
- private static ComparatorgetComparator(){
return (s1,s2)->s1.length()-s2.length();
} - static void sort(List list, Comparator<? super T> c)
根据指定的比较器引起的顺序对指定的列表进行排序。
以代码内容形式讲解
package Demo6;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
/*
static <T> void sort(List<T> list, Comparator<? super T> c)
根据指定的比较器引起的顺序对指定的列表进行排序。
函数式接口作为方法的返回值
需求:
* 定义一个类(ComparatorDemo),在类中提供两个方法
一个方法是:comparable<String>getComparator() 方法返回值Comparator是一个函数式接口
一个方法是主方法,在主方法调用getComparator方法
如果方法的返回值是一个函数式接口,我们可以使用lambda表达式作为结果返回
* private static Comparator<String>getComparator(){
return (s1,s2)->s1.length()-s2.length();
}
*/
public class ComparatorDemo {
public static void main(String[] args) {
//构造应用场景
//定义ArraysList集合,存储字符串元素
ArrayList<String> a=new ArrayList<String>();
a.add("cccc");
a.add("aa");
a.add("b");
a.add("ddd");
System.out.println("排序前"+a);
//static <T> void sort(List<T> list, Comparator<? super T> c) 根据指定的比较器引起的顺序对指定的列表进行排序。
// Collections.sort(a);默认自然排序
Collections.sort(a,getComparator());
System.out.println("排序后"+a); //按照长度排
}
private static Comparator<String> getComparator() {
// //匿名类形式写
// Comparator<String> comp = new Comparator<String>() {
// @Override
// public int compare(String s1, String s2) {
// return s1.length()-s2.length();
// }
// };
// return comp;
// };
//用lambda表达式写
Comparator<String> demo = (s1, s2) -> s1.length() - s2.length();
return demo;
}
}