繁体   English   中英

如何检查TreeMap是否是Java中另一个TreeMap的子图

[英]How to Check if a TreeMap is submap of another TreeMap in Java

Java 8的新增功能,无法弄清楚这一点。 我有两个类型为TreeMap<Long, Integer> ,一个称为patternMap ,另一个称为answerMap

patternMap被硬编码为查找键-值对的特定模式,因此有很多patternMap ,并且它们的大小始终小于或等于answerMap 我想检查哪个patternMappatternMap中的匹配answerMap ,我的意思是我需要键和值都精确匹配,而不仅仅是一个。

我无法使用submap的方法,因为patternMap可能没有钥匙的连续范围。 一种明显的方法是遍历patternMap并使用equals方法检查每个Map.Entry对象。 但是,我有很多patternMap可以检查特定的answerMap ,所以我很好奇是否有更好的方法,可能使用了lambdas / streams。 我也不能修改answerMappatternMap ,所以这必须是一个非变异函数。 我使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM