@File
2019-10-15T06:49:34.000000Z
字数 4226
阅读 182
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) {// 等于执行两次 acceptconsumer.andThen(param1).accept(param2);}
public void run(Predicate<String> predicate) {// param 是 String 类型的boolean bool = predicate.test(param);}
public void run(Predicate<String> predicate) {// param1 && param2boolean bool = predicate.and(param1).test(param2);}
public void run(Predicate<String> predicate) {// param1 || param2boolean bool = predicate.or(param1).test(param2);}
public void run(Predicate<String> predicate) {// !paramboolean 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){// 调用传入一个逻辑 functionrun(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){// 调用传入一个逻辑 functionrun(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]);}
// 参数类型和返回类型一样的 FunctionUnaryOperator<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);}