当前位置: 首页 > 面试题库 >

如何获得两个地图Java之间的区别?

阎弘雅
2023-03-14
问题内容

我有两个地图,如下所示:

Map<String, Record> sourceRecords;
Map<String, Record> targetRecords;

我想获得与每个maps.ie不同的键

  1. 它显示了在sourceRecords中可用但在targetRecords中不可用的映射键。
  2. 它显示了targetRecords中可用的映射键,而sourceRecords中没有。

我做到了如下:

Set<String> sourceKeysList = new HashSet<String>(sourceRecords.keySet());
Set<String> targetKeysList = new HashSet<String>(targetRecords.keySet());

SetView<String> intersection = Sets.intersection(sourceKeysList, targetKeysList);
Iterator it = intersection.iterator();
while (it.hasNext()) {
    Object object = (Object) it.next();
    System.out.println(object.toString());
}

SetView<String> difference = Sets.symmetricDifference(sourceKeysList, targetKeysList);
ImmutableSet<String> immutableSet = difference.immutableCopy();

编辑

if(sourceKeysList.removeAll(targetKeysList)){
            //distinct sourceKeys
            Iterator<String> it1 = sourceKeysList.iterator();
            while (it1.hasNext()) {
                String id = (String) it1.next();
                String resultMessage = "This ID exists in source file but not in target file";
                System.out.println(resultMessage);
                values = createMessageRow(id, resultMessage);
                result.add(values);
            }
        }
        if(targetKeysList.removeAll(sourceKeysList)){
            //distinct targetKeys
            Iterator<String> it1 = targetKeysList.iterator();
            while (it1.hasNext()) {
                String id = (String) it1.next();
                String resultMessage = "This ID exists in target file but not in source file";
                System.out.println(resultMessage);
                values = createMessageRow(id, resultMessage);
                result.add(values);
            }
        }

我能够找到通用键,但找不到不同的键。请帮忙。


问题答案:

集允许您也 删除 元素。

如果生成“ helper”集对您来说不是问题(因为条目太多,那么:

Set<String> sources = get a copy of all source entries
Set<String> targets = get a copy of all source entries

然后:

sources.removeAll(targets) ... leaves only entries in sources that are only in sources, not in target

sources.retainAll(targets) ... leaves only entries that are in both sets

您可以从这里开始工作…



 类似资料:
  • 问题内容: 我有两个字典。我需要找到两者之间的区别,这应该给我关键和价值。 我已经搜索并找到了一些插件/软件包,例如datadiff,dictdiff-master,但是当我在Python 2.7中尝试时,它说没有定义这样的模块。 我在这里用套装。 输出>>> set([[‘SCD-3547’,’SCD-3456’]) 我只有钥匙,我什至需要获取值。 问题答案: 使用字典理解来尝试以下代码段: 在

  • 问题内容: 我使用以下代码在Android中使用Gson比较了两个JSON对象: 有两种方法可以使用Gson以JSON格式获取两个对象之间的 差异 吗? 问题答案: 如果将对象反序列化为,则也可以使用Guava,可以用来比较两个生成的地图。 请注意,如果您关心元素的 顺序 ,则不会保留s 字段的顺序,因此此方法不会显示这些比较。 这是您的操作方式: 该程序输出: 在此处阅读更多有关结果对象包含的信

  • 本文向大家介绍如何获得两个Java LocalDate之间的天,月和年?,包括了如何获得两个Java LocalDate之间的天,月和年?的使用技巧和注意事项,需要的朋友参考一下 设置两个Java日期: 现在,使用Period类方法获取两个日期之间的差: 现在,获取年,月和日: 示例 输出结果

  • 问题内容: 我希望能够获得两个JavaScript对象图之间所有差异的列表,以及出现变化的属性名称和值。 就其价值而言,这些对象通常以JSON的形式从服务器中检索,并且通常不超过几层深度(即,可能是对象本身具有数据的数组,然后是具有其他数据对象的数组)。 我不仅要看到对基本属性的更改,还要看到数组成员等的数量差异等。 如果没有答案,我可能最终会自己写这个,但希望有人已经完成了这项工作或知道有人做了

  • 如何获得两个数据帧之间的差异。例如,我有两个数据帧 我想收到

  • 我有组表,它有列id,名称,时间戳。当有一个组的更新时,时间戳也被更新为Current。 我正在尝试使用查询显示两个ID之间的组计数。 group表具有: 任何帮助都是非常感谢的。