私はまだJavaに比較的慣れていないので、もう少し単純なはずだと思うこのコードを適切に記述しようと努力していることに気づいています。
同じオブジェクトの2つの異なるインスタンスで構成される2つのマップがあります。キーはオブジェクトであり、値はオブジェクトです。
あるインスタンスのキーが別のインスタンスのキーと異なるかどうかを判断しようとしているため、2つのインスタンスがあります。新しいキーまたは欠落しているキーを具体的に見つけて、両方のマップに存在するキーの値を比較しようとしています。
以下のサンプルコードは、私がやろうとしていることを視覚化するのに役立つだけです(もっと混乱しないことを願っています!)
以下の例の目標は、キー "C"が欠落していて、新しいキー( "D")があることを示し、最終的に両方のマップのキーの値を比較する必要があります。
主な質問は、これを1つのループで実行する方法はありますか?主な理由は、実際のコードがマップ内の値についてファイルシステムにアクセスし、ディスクにアクセスする時間を最小限に抑えようとしているためです。
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");
}
}