知识点记录-JAVA8常用语法特点函数式接口
练习函数式接口
package com.test.jdk8;
import java.util.Arrays;
import java.util.List;
import java.util.function.Function;
import java.util.function.Predicate;
@FunctionalInterface
interface Converter<F, T> {
T convert(F from);
}
public class TestFunctionInterface {
public static void main(String[] args) {
//连续调用"10"->10->10*2=20->20+3=23->"23"
Function<String, Integer> toInteger = k -> Integer.parseInt(k) * 2;
Function<String, String> backToString = toInteger.andThen((k) -> String.valueOf(k + 3));
System.out.println(backToString.apply("10"));
//线程
new Thread(() -> {
System.out.println("start " + Thread.currentThread().getName());
}).start();
Converter<String, Integer> converter1 = from -> Integer.valueOf(from);
Integer integer1 = converter1.convert("123");
System.out.println("integer1=" + integer1);
Converter<Long, String> converter2 = from -> String.valueOf(from);
String string2 = converter2.convert((long) 56);
System.out.println("string2=" + string2);
System.out.println("string3=" + converter2.convert(156L));
List<Integer> list = Arrays.asList(1, 2, 3);
print(list, n -> true);
print(list, n -> n % 2 == 0);
print(list, n -> n >= 3);
print1(list, n -> true);
}
public static void print(List<Integer> list, Predicate<Integer> predicate) {
for (Integer n : list) {
if (predicate.test(n)) {
System.out.println(n + " ");
}
}
}
public static void print1(List<Integer> list, Predicate<Integer> predicate) {
list.stream().filter(predicate).forEach(System.out::println);
}
}