我对 Java 还是比较陌生,我发现自己坚持尝试正确编写这段代码,我觉得应该更简单一些。
我有两张由同一对象的两个不同实例组成的地图。键是对象,值是对象。
有两个实例,因为我试图确定一个实例中的键是否与另一个实例中的键不同。我正在尝试专门定位新键或丢失的键,然后比较两个映射中存在的键的值。
下面的示例代码只是为了帮助可视化我正在尝试做的事情(希望它不会更令人困惑!)
下面示例的目标应该告诉我缺少键“C”并且有一个新键(“D”),然后它应该最终比较两个映射中键的值。
主要问题是,有没有办法在一个循环中做到这一点?主要是因为我的实际代码将接触文件系统以获取地图中的值,并且我试图最小化它必须接触磁盘的时间
Map<objA, objB> mapA = new HashMap<objA, objB>();
mapA.put("A", "1");
mapA.put("B", "2");
mapA.put("C", "3");
Map<objA, objB> mapB = new HashMap<objA, objB>();
mapB.put("A", "1");
mapB.put("D", "4");
// Check if something is missing from mapB
for(Map.Entry<objA, objB> entryMapA:mapA.entrySet())
{
if(!mapB.containsKey(entryMapA.getKey())
{
System.out.println(entryMapA.getKey() + " is missing");
}
}
// Check if something is new is in mapB
for(Map.Entry<objA, objB> entryMapB:mapB.entrySet())
{
if(!mapA.containsKey(entryMapB.getKey())
{
System.out.println(entryMapB.getKey() + " is new");
}
}