package com.itheima.demo3.LambdaTest;
/**
* @author newcityman
* @date 2019/8/3 - 22:15
* 使用java.lang.Runnable接口作為參數,同時使用Lambda進行傳參
*/
public class Demo01Runnable {
// 定義一個方法startThread,方法的參數就是函數式接口Runnable
public static void startThread(Runnable run) {
new Thread(run).start();
}
public static void main(String[] args) {
// 調用startThread方法,方法的參數是一個接口,那么我們可以傳遞這個接口的匿名內部類
startThread(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"--->線程啟動了");
}
});
// 使用Lambda表達式
startThread(() ->
System.out.println(Thread.currentThread().getName()+"--->線程啟動了"));
}
}
package com.itheima.demo3.LambdaTest;
import java.util.Arrays;
import java.util.Comparator;
/**
* @author newcityman
* @date 2019/8/3 - 22:32
* 當一個方法的返回值類型是函數式接口,那么就可以直接返回一個Lambda表達式
* 當需要通過一個方法來獲取一個java.util.comparator接口類型的對象作為排序器時,就可以調用方法獲取。
*/
public class Demo02Comparator {
// 定義一個方法,方法的返回值類型使用函數式接口Comparator
public static Comparator<String> getComparator() {
// 方法的返回值類型是一個接口,那么我們就可以返回這個接口的匿名內部類
/* return new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o2.length-o1.length;
}
};*/
// 使用Lambda表達式作為返回值返回
return (o1, o2) -> o2.length() - o1.length();
}
public static void main(String[] args) {
String[] arr = {"aaa", "b", "dd", "cccccc"};
System.out.println("排序前:" + Arrays.toString(arr));
Arrays.sort(arr, getComparator());
System.out.println("排序后:" + Arrays.toString(arr));
}
}