Java 将foreach重做到.stream().map
目前我有两个列表Java 将foreach重做到.stream().map,java,for-loop,collections,java-8,java-stream,Java,For Loop,Collections,Java 8,Java Stream,目前我有两个列表List monthlyFeePaymentList和一个新列表List request=new ArrayList()。我需要的是检查所有每月支付清单元素并填写我的请求清单FeePaymentStatus由monthlyFeePaymentId和sourceSystem组成(始终相同) 我目前的执行情况: List<FeePaymentStatusRequest> request = new ArrayList<>(); for (Monthly
List monthlyFeePaymentList
和一个新列表List request=new ArrayList()代码>。我需要的是检查所有每月支付清单
元素并填写我的请求
清单FeePaymentStatus
由monthlyFeePaymentId
和sourceSystem
组成(始终相同)
我目前的执行情况:
List<FeePaymentStatusRequest> request = new ArrayList<>();
for (MonthlyFeePayment monthlyFeePayment : monthlyFeePaymentList) {
request.add(new FeePaymentStatusRequest(monthlyFeePayment.getMonthlyFeePaymentId().toString(), "BGW"));
}
List request=new ArrayList();
for(MonthlyFeepPayment MonthlyFeepPayment:MonthlyFeepPaymentList){
添加(新的FeePaymentStatusRequest(monthlyFeePayment.getMonthlyFeePaymentId().toString(),“BGW”);
}
我想用.stream().map()
重新做,但我想不出来。考虑到只有两个列表,这应该很容易。但是我不知道应该先列出哪个列表,request.stream()
还是monthlyFeePaymentList.stream()
?您能否解释一下Stream#map
在这种特定情况下是如何工作的?Stream
的map
操作会将对象从MonthlyFeePayment
转换为FeePaymentStatusRequest
,考虑到您已经在循环代码中定义的方式
List<FeePaymentStatusRequest> request = monthlyFeePaymentList
.stream() // Stream<MonthlyFeePayment>
.map(monthlyFeePayment -> new FeePaymentStatusRequest(
monthlyFeePayment.getMonthlyFeePaymentId().toString(), "BGW")) // Stream<FeePaymentStatusRequest>
.collect(Collectors.toList()); // List<FeePaymentStatusRequest>
List request=monthlyFeePaymentList
.stream()//流
.map(每月预付款->新费用支付状态请求(
MonthlyFeepPayment.GetMonthlyFeepPaymentId().toString(),“BGW”)//流
.collect(Collectors.toList());//列表
您不需要显式地创建输出列表
在您的输入列表上流式传输,将每个月的预付款映射到FeePaymentStatusRequest
实例,并将收集映射到列表
:
List<FeePaymentStatusRequest> request =
monthlyFeePaymentList.stream()
.map(monthlyFeePayment -> new FeePaymentStatusRequest(monthlyFeePayment.getMonthlyFeePaymentId().toString(), "BGW"))
.collect(Collectors.toLis());
列表请求=
MonthlyFeepPaymentList.stream()
.map(monthlyFeePayment->newfeepaymentstatusrequest(monthlyFeePayment.getMonthlyFeePaymentId().toString(),“BGW”))
.collect(Collectors.toLis());
您正在迭代的对象:
List<FeePaymentStatusRequest> request = monthlyFeePaymentList.stream()
.map(monthlyFeePayment -> new FeePaymentStatusRequest(monthlyFeePayment.getMonthlyFeePaymentId().toString(), "BGW"))
.collect(Collectors.toList());
List request=monthlyFeePaymentList.stream()
.map(monthlyFeePayment->newfeepaymentstatusrequest(monthlyFeePayment.getMonthlyFeePaymentId().toString(),“BGW”))
.collect(Collectors.toList());
然后您可以收集它,而无需显式创建新列表