BiFunction介绍

BiFunction接受两个任意类型参数并返回一个任意类型对象

@FunctionalInterface
public interface BiFunction<T, U, R> {
      R apply(T t, U u);
}

BiFunction 与Function连用

private void bifunction() {
    BiFunction<Integer,Integer,Double> biFunction = (a,b)->Math.pow(a,b);
    Function<Double,String> function = a->"result:"+String.valueOf(a);
    System.out.println(biFunction.andThen(function).apply(3,4));
}

BiFunction与Function作为参数

private void bifunction2(BiFunction<Integer,Integer,Double> biFunction
                         , Function<Double,String> function
                         , Integer a,Integer b) {
   String s = biFunction.andThen(function).apply(a,b);
    System.out.println(s);
}

private void bifunction3() {
    BiFunction<Integer,Integer,Double> biFunction = (a,b)-> Math.pow(a,b);
    Function<Double,String> function = a->"result:"+a;
    bifunction2(biFunction,function,3,4);
}

BiFunction作为工厂

private void biFuncFac2(){
    GPS gps = biFunctionFac("40.741895", "-73.989308", GPS::new);
    System.out.println(gps);
}

private <R extends GPS> R biFunctionFac(String lat, String lon, BiFunction<String,String,R> biFunction){
    return biFunction.apply(lat, lon);
}

BiFunction作为filter

private <T,U,R> List<R> biFunFilter(List<T> list, U cond, BiFunction<T,U,R> biFunction) {
    List<R> result = new ArrayList<>();
    for (T t : list) {
        R r = biFunction.apply(t,cond);
        if (!Objects.isNull(r)) {
            result.add(r);
        }
    }
    return result;
}

private void  biFunFilter2() {

    List<String> list = Arrays.asList("node", "c++", "java", "javascript");
    //BiFunction<String,Integer,String> biFunction = ()
    List<String> list1 = biFunFilter(list, 3,  (a,size)-> {
        if (a.length() > size) {
            return a;
        } else {
            return null;
        }
    });
    System.out.println(list1);

    List<String> list2 = biFunFilter(list, "c", (a, cond)->{
        if (a.startsWith(cond)) {
            return a;
        } else {return null;}
    });
    System.out.println(list2);

    List<Integer> number = Arrays.asList(1,2,3,4,5,6,7);
    List<Integer> list3 = biFunFilter(number, 2, (a, cond)->{
        if (a % cond == 0) {
            return a;
        } else {return null;}
    });
    System.out.println(list3);
}

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值