基本语法:
(parameters) -> expression
或者
(parameters) ->{ statements; }
简单举个栗子:
public class ThreadTest {
public static void main(String[] args) {
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("hello you !");
}
}).start();
// 函数式接口(只有一个方法的接口)可以用 lambda表达式 替换
new Thread(() -> System.out.println("hello me !")).start();
}
}
排序
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Comparator;
public class ArraysTest {
public static void main(String[] args) {
String[] players = {"yellow","blue","red","black"};
// 排序1
// Arrays.sort(players);
// 排序2
// Arrays.sort(players, new Comparator<String>() {
// @Override
// public int compare(String o1, String o2) {
// return o1.compareTo(o2);
// }
// });
//lambda表达式
// 排序3:根据字母表排序
Arrays.sort(players,((o1, o2) -> o1.compareTo(o2)));
//结果:
//black
//blue
//red
//yellow
// 根据name长度排序
// Arrays.sort(players,((String o1,String o2) -> o1.length()-o2.length()));
//结果:
//red
//blue
//black
//yellow
// 根据最后一个字母排序
// Arrays.sort(players,((String o1,String o2) -> o1.charAt(o1.length()-1)-o2.charAt(o2.length()-1)));
//结果:
//red
//blue
//black
//yellow
for(int i = 0;i < players.length;i++) {
System.out.println(players[i]);
}
}
}
方法引用,使用双引号::
有一个苹果的List,现在需要根据苹果的重量进行排序。List 的 sort 函数接收一个 Comparator 类型的参数,Comparator 是一个函数式接口,接收两个参数,返回一个int值。
(1)静态方法引用