[英]How to Check if a TreeMap is submap of another TreeMap in Java
Java 8的新增功能,无法弄清楚这一点。 我有两个类型为TreeMap<Long, Integer>
,一个称为patternMap
,另一个称为answerMap
。
patternMap
被硬编码为查找键-值对的特定模式,因此有很多patternMap
,并且它们的大小始终小于或等于answerMap
。 我想检查哪个patternMap
是patternMap
中的匹配answerMap
,我的意思是我需要键和值都精确匹配,而不仅仅是一个。
我无法使用submap
的方法,因为patternMap
可能没有钥匙的连续范围。 一种明显的方法是遍历patternMap
并使用equals
方法检查每个Map.Entry
对象。 但是,我有很多patternMap
可以检查特定的answerMap
,所以我很好奇是否有更好的方法,可能使用了lambdas / streams。 我也不能修改answerMap
或patternMap
,所以这必须是一个非变异函数。 我使用TreeMap
是因为顺序对于应用程序很重要。
这里没有代码,因为我还没有找到执行此操作的方法,但是伪代码如下所示:
for every patternMap in the Collection {
if answerMap contains patternMap, make a note
}
编辑:这是一些定义(这不是工作代码,但希望可以使问题更清楚:
private static final TreeMap<Long, Integer> patternMap1;
private static final TreeMap<Long, Integer> patternMap2;
private static final ArrayList<TreeMap> listOfPatternMaps;
private TreeMap<Long, Integer> answerMap;
private Set<TreeMap<Long, Integer>> findPatterns(TreeMap answerMap) {
this.answerMap = answerMap;
for(patternMap : listOfPatternMaps) {
if answerMap contains patternMap {
make a note
}
}
return setOfMatchedPatterns;
}
这应该可以解决问题:
answerMap.entrySet().containsAll(patternMap.entrySet())
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.