java传递很多个list参数_java-如何将具有多个参数的方法传递给采用List的Function?...

我无法理解该函数如何通过Lambda传递给此方法

public class OrderUtil {

public static List runInBatches(List inputList,

Function, List> functionToRunInBatches) {

return Lists.partition(inputList, BATCH_CHUNK_SIZE).stream()

.flatMap(batch -> functionToRunInBatches.apply(batch).stream())

.collect(toList());

}

}

我看到下面的代码,我无法理解下面的lambda函数如何转换为上面的functionToRunInBatches? orderDao.getOrderForDates(…)接受三个参数(orders,startdate,enddate),但是我的函数接受一个列表并返回一个列表.这个电话如何运作良好?

我已经阅读了有关Function的教程和文档.

有人可以分解lambda如何映射到上面的Function吗?我无法想象这最终如何工作.

private List getOrderForDates(List orderNumbers,

tring startDate, String endDate){

return OrderUtil.runInBatches(orderNumbers,

orderBatch -> orderDAO.getOrderForDates(orderBatch, startDate, endDate));

}

解决方法:

编译器将lambda转换为新的Function对象.它使用lambda表达式中给出的代码覆盖apply方法.

所以这:

private List getOrderForDates(List orderNumbers, String startDate, String endDate){

return OrderUtil.runInBatches(orderNumbers, orderBatch -> orderDAO.getOrderForDates(orderBatch, startDate, endDate));

}

等效于此:

private List getOrderForDates(List orderNumbers, String startDate, String endDate){

return OrderUtil.runInBatches(orderNumbers, new Function, List>() {

@Override

public List apply(List orderBatch) {

return orderDAO.getOrderForDates(orderBatch, startDate, endDate);

}

});

}

然后,您的runInBatches方法仅将调用应用于该Function对象.

标签:java-8,java,lambda

来源: https://codeday.me/bug/20191025/1924790.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值