gpt4 book ai didi

Java 对 anyMatch 使用多个谓词

转载 作者:行者123 更新时间:2023-12-01 14:28:27 25 4
gpt4 key购买 nike

我有一个 ListHashMapList<Map<String, Object>> result .我想检查此列表中是否存在某个键值。

例如:

Name      Count 
Marvel 10
DC 0

我希望我的 map 列表应至少包含上表的一个条目,因为我正在使用 anyMatch
Assert.assertTrue(
result.stream().anyMatch(
ag -> ( "Marvel".equals(ag.get("Name")) && 10==(int)ag.get("Count"))
));

如何使用多个谓词?我可以有 1000 个列表 HashMap ,我只想检查列表中是否有任何两个哈希映射包含这两个条目。

最佳答案

您的数据结构一开始似乎是错误的。 A List<Map<String, Object>> ,其中每个映射代表一行并且只有一个键和一个值?您只需要一个 Map<String, Integer> .字符串是名称,整数是计数。记得给它一个有意义的名字,例如comicUniverseToSuperheroFrequency .

话虽如此, Predicate has an and method您可以使用它来将条件链接在一起。它可能看起来像这样:

public static void main(String[] args)
{
Map<String, Integer> comicUniverseToSuperheroFrequency = /*something*/;

boolean isMarvelCountTen = comicUniverseToSuperheroFrequency.entrySet().stream()
.anyMatch(row -> isMarvel().and(isTen()).test(row));
}

private static Predicate<Map.Entry<String, Integer>> isMarvel()
{
return row -> "Marvel".equals(row.getKey());
}

private static Predicate<Map.Entry<String, Integer>> isTen()
{
return row -> row.getValue() == 10;
}

关于Java 对 anyMatch 使用多个谓词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52586239/

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