1. lambda表达式。
2. 函数式接口
package com.tyt.test;
public class Test01 {
public static void main(String[] args) {
/**
* 匿名内部类
*/
/*Thread thread = new Thread(new Runnable() {
public void run() {
System.out.println("李浩辰你是个啥子嘛");
}
});*/
//Runnable target
/* Runnable runnable = ()-> {
System.out.println("李浩辰你是个啥子嘛");
};
*/
/**
* lambda表达式
*/
Thread thread = new Thread(()-> System.out.println("李浩辰你是个啥子嘛"));
thread.start();
}
}
3.JDK内置的函数式接口
(1)消费性函数式接口: void accept(T t)由一个参数,但是没有返回值
package com.tyt.test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Random;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;
public class Test02 {
public static void main(String[] args) {
/*Consumer<Double> consumer = new Consumer<Double>() {
@Override
public void accept(Double aDouble) {
System.out.println("消费金额:" + aDouble);
}
};*/
Consumer<Double> consumer = a -> System.out.println("消费金额:" + a);
hobby(consumer,1000);
/* Supplier<Integer> supplier = new Supplier<Integer>() {
@Override
public Integer get() {
return new Random().nextInt(10);
}
};*/
Supplier<Integer> supplier = () -> new Random().nextInt(10);
System.out.println(Arrays.toString(getSupplier(supplier, 5)));
/* Function<String, String> function = new Function<String, String>() {
@Override
public String apply(String s) {
return s.toUpperCase();
}
};*/
Function<String, String> function = s -> s.toUpperCase();
System.out.println(Supper(function, "zhangsan"));
List<String> list=new ArrayList<>();
list.add("zhangsan");
list.add("lisi");
list.add("wangwu");
list.add("zhaoliu");
list.add("tianqi");
/*Predicate<String> predicate = new Predicate<String>() {
@Override
public boolean test(String s) {
return s.length() > 2;
}
};*/
Predicate<String> predicate =s -> s.length() > 2;
List<String> list1 = predicate(predicate, list);
System.out.println(list1);
}
//消费性函数式接口的使用。
public static void hobby(Consumer<Double> consumer, double money) {
consumer.accept(money);
}
//供给型函数式接口
public static int[] getSupplier(Supplier<Integer> supplier, Integer id) {
int[] arr = new int[id];
for (int i = 0; i < id; i++) {
arr[i] = supplier.get();
}
return arr;
}
//函数型函数式接口
public static String Supper(Function<String,String> function,String str) {
return function.apply(str);
}
public static List<String> predicate(Predicate<String> predicate, List<String> list) {
ArrayList<String> strings = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
if (predicate.test(list.get(i))) {
strings.add(list.get(i));
}
}
return strings;
}
}
) {
strings.add(list.get(i));
}
}
return strings;
}
}