java - 在 Java 中区分和比较 Map 值的有效方法
问题描述
我有 2 个 LinkedHashMap,我正在尝试相互比较,并且应该显示基于键的值是否有任何差异。
srcMap={Col1=Val1,Col2=Val2,Col3=Val3,Col4=ValDiff,,Col5=Val3}
dstMap={Col1=Val1,Col2=Val2,Col3=Val3,Col4=Val3,,Col5=ValMisMatch}
我正在尝试使用循环以下方式。
Iterator<Map.Entry<String,String>> itSrc=srcMap.entrySet().iterator();
while(itSrc.hasNext()){
String srcKey=itSrc.next().getKey();
String srcValue=srcMap.get(srcKey);
String dstValue=dstMap.get(srcKey);
if(!srcValue.equals(dstValue))
//printing value and corresponding key
}
我正在寻找的是,有没有比这更好/更快的方法?
解决方案
我认为这样的事情会很有趣
for(Map.Entry<String,String> entry : srcMap.entrySet()) {
String key = entry.getKey();
if (dstMap.contains(key)) {
if (entry.getValue().equals(dstMap.get(key)) {
continue;
}
}
System.out.println("Your desired output");
}
UPD。如果您的程序不希望有人映射null
到某个键:
for(Map.Entry<String,String> entry : srcMap.entrySet()) {
String key = entry.getKey();
if (entry.getValue().equals(dstMap.get(key)) {
continue;
}
System.out.println(
"Key:" + key +
"; Values differ:" + entry.getValue() +
"," + dstMap.get(key)
);
}
请注意,map.get(key)
在两种情况下可能会返回 null - 有人将 null 映射到键,或者键的值不存在
推荐阅读
- javascript - 如何在 React.Fragment 中通过 ID 获取元素?
- python - 为什么不能使用数字在 Django 中引用字典
- c++ - 是否可以在使用基于元数据信息的 ffmpeg c++ api 解码视频时旋转帧?
- git - 如何在没有提交的情况下合并到分支?
- ruby - 如何在 Ruby 中将单词转换为拼音字母?
- c# - 使用 Syncfusion DocIO 将 word doc 转换为 pdf 并保存到磁盘
- sql-server - 触发规则的触发器出错
- sql - SQLX 扫描到结构数组
- python - keras:如何将帧级预测聚合到歌曲级预测
- python - 如何在 word2vec.similarity 中使用列表