Wie zum Zusammenführen von zwei Listen von Objekten durch den Vergleich von Feld-Wert in der gegebenen Objekte in Java

Habe ich zwei Liste mit Objekten, und ich möchte Sie zu einer Einheit verschmelzen. die Objekte haben zwei Felder, "name" und "Wert". Für eine gegebene obj2 in liste2 , wenn wir eine übereinstimmung finden, der "name" - Feld von obj1 in Liste1 (obj1 von list1 und obj2 von liste2), dann verwenden wir den "Wert" von obj2 zu überschreiben obj1. wenn keine übereinstimmung gefunden wird, dann fügen wir obj2 auf "list1". Die endgültige Ausgabe wird aktualisiert werden list1.

Gibt es eine schnelle Möglichkeit, dies zu tun? Ich denken kann, ist die Verwendung von zwei for-Schleifen vergleichen Sie alle Objekte, die in beiden Listen

class NameValueObj{
String name;
String value;
}

List<NameValueObj> merge(List<NameValueObj> list1, List<NameValueObj> list2){
//I want to merge two list here
}

NameValueObj ist gegeben, so dass ich kann;t ändern Sie die Objekt-Quelle.

Hier ist mein Weg, es zu tun.

private List<Header> mergeHeaders(List<Header> defHeaders, List<Header> ovrdHeaders) {
        List<Header> lFinal = defHeaders;
        boolean foundMatch = false;
        for (Header ovrdHeader : ovrdHeaders) {
            foundMatch = false;
            for (Header defHeader : defHeaders) {
                if (defHeader.getName().equalsIgnoreCase(ovrdHeader.getName())) {
                    defHeader.setValue(ovrdHeader.getValue());
                    foundMatch = true;
                    break;
                }
            }
            if(!foundMatch) {
                lFinal.add(ovrdHeader);
            }

        }

        return lFinal;
    }

Header-name und Wert-Feld. Header hat eindeutigen Namen, die in einer übergebenen Liste.

InformationsquelleAutor user2744486 | 2015-02-11
Schreibe einen Kommentar