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

aaa*_*hhh 2 java collections dictionary

Java 8的新手,我无法弄清楚这一点.我有两个类型的地图TreeMap<Long, Integer>,一个叫patternMap,另一个answerMap.

patternMap硬编码是为了寻找一个特定的键值对模式,所以有许多patternMap,它们的大小总是小于或等于answerMap.我想检查哪些patternMap是匹配的answerMap,我的意思是我需要完全匹配键和值两者,而不仅仅是一个.

我无法使用该submap方法,因为patternMap可能没有连续的键范围.显而易见的方法是遍历patternMapMap.Entry使用equals方法检查每个对象.但是,我有很多patternMap要检查特定的answerMap,所以我很想知道是否有更好的方法,可能使用lambdas/streams.我也无法修改answerMap或者patternMap,所以这必须是一个非变异函数.我使用TreeMap的是因为顺序对于应用程序很重要.

这里没有代码,因为我还没有找到这样做的方法,但伪代码看起来像这样:

for every patternMap in the Collection {
   if answerMap contains patternMap, make a note
}
Run Code Online (Sandbox Code Playgroud)

编辑:这里有一些定义(这不是工作代码,但希望问题更清楚:

 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;
  }
Run Code Online (Sandbox Code Playgroud)

Mis*_*sha 6

这应该做的伎俩:

answerMap.entrySet().containsAll(patternMap.entrySet())
Run Code Online (Sandbox Code Playgroud)