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)
归档时间: |
|
查看次数: |
391 次 |
最近记录: |