【发布时间】:2020-07-29 10:31:32
【问题描述】:
在我的业务案例中,我需要选择已为第三方经销商分配代码的可乐品牌的代码。
我需要交叉检查当前合同中的所有经销商代码是否正确,并且没有输入外部代码。为此,我有代码的主列表。
查看我拥有的示例数据
List<String> mixedOfLAndPCodes = ["L123", "P123", "P234", "", "P2345", ""];
List<String> masterPCodes = ["P123", "P234", "P2345", "P111", "P23456"];
String masterLCode = "L123";
我如何确定所有mixedOfLAndPCodes 都在java stream 的主代码列表中可用?
我写的代码是这样的
boolean a = mixedOfLAndPCodes.stream().allMatch(it -> masterLCode.equals(it) || masterPCodes.contains(it));
无法确定这是否足以测试我的案例或需要一些改进。
【问题讨论】:
-
你想如何处理空字符串?由于mixedOfLAndPCodes 列表中存在2 个空字符串,您当前的代码将返回false。这是期望的结果吗?
-
有空字符串是可以的。这意味着没有分配可乐。
-
在这种情况下,您可能希望从 Stream 中过滤掉空字符串。否则 allMatch 将返回 false。
-
您没有发现代码有任何问题吗?
-
List 实例化存在问题,它将无法工作。你应该使用类似
List.of("L123", "P123", "P234", "", "P2345", "")的东西。除此之外,已经提到的空字符串处理应该可以工作。
标签: java java-8 java-stream predicate