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());
然后您可以收集它,而无需显式创建新列表