List<EcOrderGoodsDto> Stream循环给里面的某个字段赋值
时间: 2023-05-12 14:06:31 浏览: 120
可以使用 map() 方法来给 List<EcOrderGoodsDto> 中的某个字段赋值,示例代码如下:
List<EcOrderGoodsDto> orderGoodsList = new ArrayList<>();
// 使用 Stream 循环给 orderGoodsList 中的 goodsName 字段赋值
orderGoodsList.stream().map(orderGoods -> {
orderGoods.setGoodsName("商品名称");
return orderGoods;
}).collect(Collectors.toList());
相关问题
当List<B>以复数字段作为keyList与List<A>进行match,match成功时,将List<B>根据条件将部分字段更新后生成新的list,并且要求不改变原来List<B>的值。用Java8写一个满足需求的代码
假设List<A>中有一个字段aField,List<B>中有一个字段bField,我们需要以bField作为keyList去匹配List<A>中的aField,如果匹配成功,则将List<B>中的部分字段更新后生成新的List,不改变原来的List<B>。
可以使用Java8的流式操作来实现这个需求,具体代码如下:
```
List<B> originalListB = new ArrayList<>();
//初始化原始List<B>
List<A> listA = new ArrayList<>();
//初始化List<A>
List<B> updatedListB = originalListB.stream()
.map(b -> {
Optional<A> matchedA = listA.stream()
.filter(a -> a.getAField().equals(b.getBField()))
.findFirst();
if (matchedA.isPresent()) {
//匹配成功,生成新的B对象并更新部分字段
B newB = new B(b.getBField());
newB.setOtherField1(b.getOtherField1());
newB.setOtherField2(matchedA.get().getOtherField());
return newB;
} else {
//匹配失败,返回原始的B对象
return b;
}
})
.collect(Collectors.toList());
```
这段代码首先使用stream()方法将List<B>转换为一个流,在流中使用map()方法遍历每个B对象,并对其进行处理。在map()方法中,使用stream()方法将List<A>转换为一个流,然后使用filter()方法过滤出与当前B对象匹配的A对象,如果匹配成功,则使用findFirst()方法获取第一个匹配成功的A对象。如果匹配失败,则直接返回原始的B对象。
如果匹配成功,则生成一个新的B对象并更新部分字段,然后返回这个新的B对象。最后,使用collect()方法将处理后的B对象收集到一个新的List中,并将其赋值给updatedListB。
在java中,有个List<PassengerDetailInfo>,字段有passengerId,passengerPhoneNbr,ecifPhoneNbr,agentPhoneNbr,customPhoneNbr,chnName,idNbr。有多条数据,现在另外一个集合, List<PassengerDetailInfoPhoneNbr>,字段有passengerPhoneNbr,ecifPhoneNbr,agentPhoneNbr,customPhoneNbr,chnName,现在将List<PassengerDetailInfo>passengerPhoneNbr,ecifPhoneNbr,agentPhoneNbr,customPhoneNbr,chnName,的值,匹配添加到List<PassengerDetailInfoPhoneNbr>中,用stream流的方式,将完整代码展示出来
好的,根据您的需求,我给您提供一下代码:
```java
List<PassengerDetailInfo> passengerDetailInfoList = new ArrayList<>(); // 原始数据
List<PassengerDetailInfoPhoneNbr> passengerDetailInfoPhoneNbrList = new ArrayList<>(); // 目标数据
// 使用stream流的方式,将原始数据中的值匹配添加到目标数据中
passengerDetailInfoList.stream().forEach(passengerDetailInfo -> {
PassengerDetailInfoPhoneNbr passengerDetailInfoPhoneNbr = new PassengerDetailInfoPhoneNbr();
passengerDetailInfoPhoneNbr.setPassengerPhoneNbr(passengerDetailInfo.getPassengerPhoneNbr());
passengerDetailInfoPhoneNbr.setEcifPhoneNbr(passengerDetailInfo.getEcifPhoneNbr());
passengerDetailInfoPhoneNbr.setAgentPhoneNbr(passengerDetailInfo.getAgentPhoneNbr());
passengerDetailInfoPhoneNbr.setCustomPhoneNbr(passengerDetailInfo.getCustomPhoneNbr());
passengerDetailInfoPhoneNbr.setChnName(passengerDetailInfo.getChnName());
passengerDetailInfoPhoneNbrList.add(passengerDetailInfoPhoneNbr);
});
```
这段代码就是将原始数据中的字段值,添加到目标数据中的过程。其中,我们使用了stream流的方式遍历原始数据,并且针对每一条数据,将其对应的字段值添加到目标数据中。需要注意的是,我们需要先创建一个新的`PassengerDetailInfoPhoneNbr`对象,将原始数据中对应的字段值赋值给新对象,最后将新对象添加到目标数据中。
阅读全文