Wie man den Unterschied zwischen zwei Karten Java?
Ich habe zwei Karten als unten :
Map<String, Record> sourceRecords;
Map<String, Record> targetRecords;
Ich will dir die Schlüssel, die unterscheiden sich von jeder der Karten.ich.e.
- Es zeigt kartierschlüssel verfügbar in sourceRecords aber nicht in targetRecords.
- Es zeigt kartierschlüssel verfügbar in targetRecords aber nicht in sourceRecords.
Habe ich es wie folgt :
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();
BEARBEITEN
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);
}
}
Ich bin in der Lage zu finden, den gemeinsamen Schlüssel, aber keine eindeutige Schlüssel. Bitte helfen Sie.
- Sind Sie auf der Suche nach Guave ist
Sets.symmetricDifference(source.keySet(), target.keySet())
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sets ermöglichen Ihnen entfernen Elemente.
Generieren, wenn "Helfer" setzt, ist nicht ein problem für Sie (weil es zu viele Einträge; was ist mit:
dann:
in der Erwägung, dass
Können Sie Ihren Weg von hier aus ...
Können Sie Guave's
Karten.Unterschied(Map<K V> Links, Map<K V> rechts)
Methode. Es gibt eineMapDifference
- Objekt, das Methoden zum abrufen aller vier Arten von map-Einträge:Also in deinem Fall, könnte es gelöst werden mit nur 3 Zeilen code:
Können Sie eine Kopie
Set
undremoveAll
:Sehen Die Schnittstelle
sourceKeysList.removeAll(targetKeysList)
targetKeysList.removeAll(sourceKeysList)