Wie man in Java auf gute Weise Objektpaare in derselben Liste findet

Dri

Ich habe einArrayList mit verschiedenen Objekten. Ich versuche, in der gleichen Liste Objektpaare auf der Grundlage einer Bedingung zu suchen. Wenn ich die richtigen Paare gefunden habe, erstelle ich ein neues Objekt und füge es einer neuen Liste hinzu. Ich möchte jedoch vermeiden, ein Objektpaar zu erstellen, wenn objectA mit objectB und objectB mit objectA gepaart werden.

Ich habe bis jetzt keinen guten Weg gefunden, das zu tun.

Ideen, die ich versucht habe

2 für Schleifen

for(Object objectA : objectList){
    for(Object objectB : objectList){
        if(condition){
            // create new object
            // add to list
        }
    }
}

Problem: Ich muss die bereits übereinstimmenden Paare irgendwie markieren, da sonst zwei Objekte für dasselbe Paar erstellt werden, die ich vermeiden möchte. Es funktioniert, ist aber wahrscheinlich nicht die beste Lösung?

Iteratoren

Wie die Version mit zwei Forloops habe ich einen Iterator verwendet und das bereits übereinstimmende Objektpaar aus der Liste entfernt. Funktioniert, scheint aber nicht so gut zu sein?

Java8 forEach & removeIf

objectList.stream().forEach(posA -> {
    objectList.removeIf(posB -> condition);
});

Problem: Wann würde ich mein Objektpaar Objekt erstellen ...?

Frag

Was ist die beste Idee - oder gibt es eine bessere Lösung, die ich nicht bekommen habe?

Antworten auf die Frage(8)

Ihre Antwort auf die Frage