本文参考自:java8函数式编程
链接:https://blog.csdn.net/qq_28411869/article/details/82841706
public class demo1 {
public static void main(String[] args) {
Predicate<Integer> a = (x)->x<6; //接受一个参数返回布尔类型
System.out.println(a.test(5));
System.out.println(a.test(6));
BinaryOperator<Integer> addBinaryOperator = (x,y)->x+y; //接受2个参数,返回一个值,不声明类型编辑不通过
System.out.println(addBinaryOperator.apply(3, 5));
BinaryOperator<String> addBinaryOperator2 = (x, y)->x+y; //接受2个参数,返回一个值
System.out.println(addBinaryOperator2.apply("3", "5"));
}
}
public class demo1 {
public static void main(String[] args) {
List<String> asList = Arrays.asList("","2","3","4","3");
//为空的数量
long filter = asList.stream().filter(list -> list.isEmpty()).count(); //Stream 是用函数式编程方式在集合类上进行复杂操作的工具。
System.out.println(filter);
long filter2 = asList.stream()
.filter(list -> {
System.out.println(list); //会输出
return list.isEmpty();
}).count();
/**
* 判断一个操作是惰性求值还是及早求值很简单:
* 只需看它的返回值。如果返回值是 Stream, 那么是惰性求值;
* 如果返回值是另一个值或为空,那么就是及早求值。
* 使用这些操作的理 想方式就是形成一个惰性求值的链,最后用一个及早求值的操作返回想要的结果,这正是 它的合理之处。
*/
Stream<String> filter3 = asList.stream()
.filter(list -> {
System.out.println(list); //不会输出
return list.isEmpty();
});
}
}