我有一个HashMap。我想检查我的HashMap的值中是否包含我的单个arraylist(nodeList)值。为了访问Map中给定way元素的节点值,我使用了getNodes方法,该方法的输出如下:getNodes()返回列表输出:[元素N847744431({}),元素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; }}我该怎么办才能解决此问题,我想在我的哈希图中检查给定的值,但是.contains()方法在这种情况下不起作用。 最佳答案 (编辑:糟糕!我没有看到这个问题很旧。我将记录下来的答案留作记录)另一种解决方案是使用flatmap函数构造地图上包含的节点列表,然后将带谓词的anyMatch应用到测试地图上的nodeList.get(i)是否存在。Boolean exists = wayList.values().stream().flatMap(Collection::stream).anyMatch(element -> element.equals(nodeList.get(i));当然,您应该为Node类型定义函数equals和hashcode。关于java - 如何检查列表结果作为给定String的HashMap值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43342257/
10-11 17:11