@File
2019-10-15T06:49:34.000000Z
字数 4226
阅读 112
java
name | type | description |
---|---|---|
Consumer |
Consumer<T> |
提供T参数,无返回值 |
Predicate |
Predicate<T> |
提供T参数,返回bool值 |
Function |
Function<T,R> |
提供T参数,返回R值 |
Supplier |
Supplier<T> |
无参,返回T值 |
UnaryOperator |
UnaryOperator<T> |
提供T参数,返回T值 |
BiConsumer |
BiConsumer<T,U> |
提供T,U参数,无返回值 |
BiPredicate |
BiPredicate<T,U> |
提供T,U参数,返回bool值 |
BiFunction |
BiFunction<T,U,R> |
提供T,U参数,返回R值 |
BinaryOperator |
BinaryOperator<T> |
提供T,T参数,返回T值 |
public void run(Consumer<String> consumer) {
// param 是 String 类型的
consumer.accept(param);
}
public void run(Consumer<String> consumer) {
// 等于执行两次 accept
consumer.andThen(param1).accept(param2);
}
public void run(Predicate<String> predicate) {
// param 是 String 类型的
boolean bool = predicate.test(param);
}
public void run(Predicate<String> predicate) {
// param1 && param2
boolean bool = predicate.and(param1).test(param2);
}
public void run(Predicate<String> predicate) {
// param1 || param2
boolean bool = predicate.or(param1).test(param2);
}
public void run(Predicate<String> predicate) {
// !param
boolean bool = predicate.negate().test(param);
}
equals
完全一样equals
存在NPE风险,isEqual
底层会做null判断
public void run(String param) {
// 和 param.equals("lidaye") 作用一样
boolean bool = Predicate.isEqual(param).test("lidaye");
}
// 模拟状态码
private static Integer code = 404;
public static void main(String[] args) {
// 调用:设定不同状态码的含义
run(c -> {
String msg = "ojbk";
switch (c){
case 403:
msg = "未授权!";
break;
case 404:
msg = "找不到页面!";
break;
case 500:
msg = "网络异常!";
break;
default:
}
return msg;
});
}
// 封装 lambda 方法
public static String run(Function<Integer,String> function) {
return function.apply(code);
}
// 模拟一个数值
private static Integer num = 10;
public static void main(String[] ages){
// 调用传入一个逻辑 function
run(u -> u * 2);
}
// 封装 lambda 方法
public static Integer run(Function<Integer,Integer> function) {
// 先执行 compose() 参数中的逻辑(n * n)
// 再吧 n * n 的结果传给 function 逻辑
return function.compose((Function<Integer, Integer>) n -> n * n).apply(num);
}
// 模拟一个数值
private static Integer num = 10;
public static void main(String[] ages){
// 调用传入一个逻辑 function
run(u -> u * 2);
}
// 封装 lambda 方法
public static Integer run(Function<Integer,Integer> function) {
// 先执行 function 逻辑(n * 2)
// 再吧 n * 2 的结果传给 andThen() 参数中的逻辑
return function.andThen(n -> n * n).apply(num);
}
public static void main(String[] ages){
// 调用传入一个值
run(10);
}
// 封装 lambda 方法
public static Integer run(Integer num) {
Integer i = (Integer) Function
// 取 Function 对象
.identity()
// 传入逻辑
.compose((Function<Integer, Integer>) n -> n * n)
// 传入参数值
.apply(num);
// 返回结果
return i;
}
public static void main(String[] ages){
// 传入数据,拿到数组
run(() -> {
List<User> users = new ArrayList<>();
users.add(new User("李大爷", 20));
users.add(new User("胡大妈", 18));
return users;
});
}
// 封装 lambda 方法
public static String[] run(Supplier<List<User>> supplier) {
List<User> users = supplier.get();
List<String> list = new ArrayList<>(users.size());
// 遍历取出 name 的值
users.forEach(u -> list.add(u.getName()));
return list.toArray(new String[0]);
}
// 参数类型和返回类型一样的 Function
UnaryOperator<T> extends Function<T, T>
public static void main(String[] ages){
// 传入数据
System.out.println(run(u -> u * u));
}
public static Integer run(UnaryOperator<Integer> unaryOperator) {
return unaryOperator.apply(10);
}
public void run(BiConsumer<String, Integer> biConsumer) {
// 实现方法时可以接收两个参数
biConsumer.accept(name,age);
}
public void run(BiPredicate<String, Integer> biPredicate) {
// 实现方法时可以接收两个参数
boolean bool = biPredicate.test(name,age);
}
public static String run(BiFunction<Integer, String, String> biFunction) {
return biFunction.apply(code,String);
}
public static Integer run(int num1, int num2) {
return BinaryOperator
// 设置Comparator排序规则
.minBy((Comparator<Integer>)(i1,i2) -> i1-i2)
// 传入排序参数
.apply(num1,num2);
}
public static Integer run(int num1, int num2) {
return BinaryOperator
// 设置Comparator排序规则
.maxBy((Comparator<Integer>)(i1,i2) -> i1-i2)
// 传入排序参数
.apply(num1,num2);
}