Comment obtenir la différence entre les deux cartes Java?

J'ai deux cartes comme ci-dessous :

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

Je veux obtenir les clés diffèrent les uns des cartes.j'.e.

  1. Il montre la cartographie des clés disponibles dans sourceRecords mais pas dans targetRecords.
  2. Il montre la cartographie des clés disponibles dans targetRecords mais pas dans sourceRecords.

J'ai fait comme ci-dessous :

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();

MODIFIER

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);
            }
        }

Je suis en mesure de trouver les clés communs, mais pas de clés distinctes. S'il vous plaît aider.

Vous êtes à la recherche pour la Goyave est Sets.symmetricDifference(source.keySet(), target.keySet())?

OriginalL'auteur Robot | 2016-06-24