Ich habe zwei Karten wie folgt:Wie bekomme ich den Unterschied zwischen zwei Karten Java?
Map<String, Record> sourceRecords;
Map<String, Record> targetRecords;
ich die Schlüssel unterscheiden sich von jedem der maps.i.e. erhalten möchten
- Es zeigt die Zuordnungsschlüssel in sourceRecords, aber nicht in targetRecords.
- Es zeigt Zuordnungsschlüssel in targetRecords, aber nicht in sourceRecords.
Ich habe es wie folgt: aber nicht eindeutige Schlüssel
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();
EDIT
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 in der Lage bin, die gemeinsamen Schlüssel zu finden. Bitte helfen Sie.
Suchen Sie nach Guavas 'Sets.symmetricDifference (source.keySet(), target.keySet())'? – blubb