gpt4 book ai didi

java - 如何检查给定字符串的列表结果作为 HashMap 值

转载 作者:行者123 更新时间:2023-11-30 02:34:52 26 4
gpt4 key购买 nike

我有一个 HashMap。我想检查我的个人数组列表(nodeList)值是否包含在我的 HashMap 的值中。为了访问 map 中给定路径元素的节点值,我使用了 getNodes 方法,其输出如下:

getNodes() 返回一个列表<>输出:[Element N847744431 ({}), Element N847744763 ({})]

public class RoadNetwork{

public void checkContent(){
for(int i =0; i < nodeList.size(); i++){
/* Does node(i) belong in the valueList of Way? */
Set<Map.Entry<String, Element>> entrySet = wayList.entrySet();
for (Map.Entry entry : entrySet){
Way w1 = (Way) wayList.get(entry.getKey());
//Check if Way contains node(i)
if(w1.getNodes().contains(nodeList.get(i))){
System.out.println("Found something");
}
}
}
}
}

public class Way{

public List<Node> getNodes(){
return nodes;
}
}

我可以做什么来解决这个问题,我想检查 HashMap 中的给定值,但是 .contains() 方法在这种情况下不起作用。

最佳答案

(编辑:哎呀!我没有看到这个问题已经过时了。我会保留答案记录)

另一种解决方案是使用 flatmap 函数构造 map 上包含的节点列表,然后应用带有谓词的anyMatch 来测试 map 上是否存在nodeList.get(i)。

Boolean exists = wayList.values().stream().flatMap(Collection::stream).anyMatch(element -> element.equals(nodeList.get(i));

当然,您应该为您的 Node 类型定义 equals 和 hashcode 函数。

关于java - 如何检查给定字符串的列表结果作为 HashMap 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43342257/

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