Java 8 Stream 查找新收费方案:使用 filter 和 collect
使用 Java 8 Stream 查找新收费方案
假设我们有两个列表:
List<OtherChargeScheme> newChargeSchemes:包含所有新收费方案。*List<Long> oldChargeSchemeIds:包含所有旧收费方案的 ID。
OtherChargeScheme 类有一个名为 chargeSchemeId 的属性。
我们希望找到所有在 newChargeSchemes 中存在,但在 oldChargeSchemeIds 中不存在的 OtherChargeScheme。
使用 Java 8 流 (Stream) 实现该需求:
我们可以使用 filter() 方法过滤出符合条件的 OtherChargeScheme 对象,然后使用 collect() 方法将结果收集为一个 List。javaList
代码说明:
newChargeSchemes.stream()将newChargeSchemes转换为一个流。2..filter(scheme -> !oldChargeSchemeIds.contains(scheme.getChargeSchemeId()))使用filter()方法过滤流中的元素,仅保留chargeSchemeId不在oldChargeSchemeIds中的OtherChargeScheme对象。3..collect(Collectors.toList())使用collect()方法将过滤后的结果收集为一个List,并赋值给result变量。
注意: 上述代码假设 OtherChargeScheme 类中存在一个名为 getChargeSchemeId() 的方法来获取 chargeSchemeId 属性的值。
示例:
假设 newChargeSchemes 包含以下收费方案:
[ { chargeSchemeId: 1 }, { chargeSchemeId: 2 }, { chargeSchemeId: 3 }]
oldChargeSchemeIds 包含以下收费方案 ID:
[1, 2]
使用上述代码,result 将包含以下收费方案:
[ { chargeSchemeId: 3 }]
因为 chargeSchemeId 为 3 的方案在 newChargeSchemes 中存在,但在 oldChargeSchemeIds 中不存在。
原文地址: http://www.cveoy.top/t/topic/fdeo 著作权归作者所有。请勿转载和采集!