aaa*_*hhh 2 java collections dictionary
Java 8的新手,我无法弄清楚这一点.我有两个类型的地图TreeMap<Long, Integer>,一个叫patternMap,另一个answerMap.
patternMap硬编码是为了寻找一个特定的键值对模式,所以有许多patternMap,它们的大小总是小于或等于answerMap.我想检查哪些patternMap是匹配的answerMap,我的意思是我需要完全匹配键和值两者,而不仅仅是一个.
我无法使用该submap方法,因为patternMap可能没有连续的键范围.显而易见的方法是遍历patternMap并Map.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)
这应该做的伎俩:
answerMap.entrySet().containsAll(patternMap.entrySet())
Run Code Online (Sandbox Code Playgroud)