Java Stream 流操作:匹配 ChargeScheme ID 并更新 rooms 属性
使用 Java Stream 流操作,可以高效地匹配 List
以下代码实现该操作:
chargeSchemes.stream()
.filter(cs -> roomRevenueConfigChargeSchemes.stream()
.anyMatch(rrccs -> rrccs.getChargeScheme().getId().equals(cs.getId())))
.forEach(cs -> {
RoomRevenueConfigChargeScheme rrccs = roomRevenueConfigChargeSchemes.stream()
.filter(rrccs -> rrccs.getChargeScheme().getId().equals(cs.getId()))
.findFirst().orElse(null);
if (rrccs != null) {
cs.setRooms(rrccs.getRoomRevenueConfig().getRoom());
}
});
首先,使用 stream 流对 chargeSchemes 集合进行遍历,并使用 filter 过滤出 ChargeScheme ID 与 roomRevenueConfigChargeSchemes 中任意元素的 ChargeScheme ID 相同的元素。然后,使用 forEach 对过滤出的元素进行操作,通过 stream 流遍历 roomRevenueConfigChargeSchemes 集合,使用 filter 过滤出 ChargeScheme ID 与当前元素相同的元素,使用 findFirst 获取第一个匹配的元素。如果找到匹配元素,则将该元素的 roomRevenueConfig 的 room 属性赋值给 chargeSchemes 中对应元素的 rooms 属性。
这种方式可以有效地利用 Java Stream 流的特性,简化代码逻辑,提高代码可读性和可维护性。
原文地址: https://www.cveoy.top/t/topic/ozVm 著作权归作者所有。请勿转载和采集!