sna*_*ggs 1 java collections map set-difference
我有两张地图:
Map<String, Sample> newMap = convertJSONObjectToSampleMap(newMapStr);
Map<String, Sample> oldMap = convertJSONObjectToSampleMap(oldMapStr);
这Sample是一些自定义类
该   newMap有键:[1,2,3,4,5]
在   oldMap具有键:[2,3,4,5,8]
什么是获得它们之间差异的最佳方式,.e,Sample用键获得:1和8?
我想用Collections并提取Set<>:
Set<String> newSet = newMap.keySet();
Set<String> oldSet = oldMap.keySet();
谢谢,
你想要什么称为对称差异.

番石榴提供了这样一种方法.
Set<String> diff = Sets.symmetricDifference(newSet, oldSet);
然后只需遍历集合获取样本.
List<Sample> samples = new ArrayList<>();
for(String key : diff){
    if(oldMap.containsKey(key)){
        samples.add(oldMap.get(key));
    } else {
        samples.add(newMap.get(key));
    }
}
您也可以使用官方API来实现,基本上对称差异是联合减去两组的交集,但为什么要重新发明轮子呢?
如果你只使用一种方法,那么使用外部依赖可能会很糟糕,但是Guava提供了许多有用的功能.
| 归档时间: | 
 | 
| 查看次数: | 7177 次 | 
| 最近记录: |