gpt4 book ai didi

java - 列表数据包含其他列表中的所有确切数据

转载 作者:行者123 更新时间:2023-12-01 17:23:36 25 4
gpt4 key购买 nike

在我的业务案例中,我需要选择已为第三方经销商分配代码的可乐品牌的代码

我需要交叉检查契约(Contract)中当前的所有经销商代码是否正确,并且没有输入外部代码。为此,我有主代码列表。

查看我拥有的示例数据

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));

无法确定这是否足以测试我的案例或需要进行一些改进。

最佳答案

当我想给出关于为什么我要编写特定代码的功能性观点时,我喜欢使用 Predicate

我们可以根据您的情况,为您的每个需求创建一个谓词,然后将它们组合起来给出概述。这是一个例子:

   public static Predicate<String> isExistingPMaster(List<String> pCodes) {
return pCodes::contains;
}

public static Predicate<String> isExistingLMaster(List<String> lCodes) {
return lCodes::contains;
/*
* here we manage a list of lCodes but it also could be
* a single string with an equals() as in your question.
*
*/
}

public static Predicate<String> isExistingInMaster(List<String> pCodes, List<String> lCodes) {
return isExistingPMaster(pCodes).or(isExistingLMaster(lCodes));
}

创建谓词后,我们可以直接在流中使用它们:

List<String> mixedOfLAndPCodes = Arrays.asList("L123", "P123", "P234", "", "P2345", "");
List<String> masterPCodes = Arrays.asList("P123", "P234", "P2345", "P111", "P23456");
List<String> masterLCode = Arrays.asList("L123", "L125");

mixedOfLAndPCodes.stream().filter(isExistingInMaster(masterPCodes, masterLCode));

它运行良好,甚至非开发人员也能在一定程度上阅读。

关于java - 列表数据包含其他列表中的所有确切数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61245938/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com