Durch Muster in Array iterieren

Eichelhäer

Bekanntes Mitglied
Hallo,

ich habe folgendes Problem:

Ich habe ein Array in dem sich mehrere Objekte befinden. Ich möchte diese nun so miteinander in einer Schleife vergleichen, dass die beiden indices nie gleich sind.

Momentan tue ich folgendes:

arr[0].boundingBox.contains(mouse) && arr[1].boundingBox.contains(mouse) ....

Von Hand, also wenn ich jeden index einzeln eingebe und die Objekte miteinander vergleiche funktioniert der Code so wie ich möchte. Sobald ich aber eine Schleife verwende und den einen mit dem anderen vergleiche komme ich auf falsche ergebnisse. In etwa so:

foo(MyRectangle rec) {

for(MyRectangle other : recs) {
if(!rec.equals(other) {
....
}
}

}

wobei foo wiederum in einer Schleife aufgerufen wird mit dem zu testenden Rectangle(Parameter) rec.

Mach ich da was grundlegendes falsch oder geht das in die richtige richtung?
 
Das hängt vom Vergleich ab, bei equals spielt es ja keine Rolle, ob a.equals(b) oder b.equals(a). D. h. wenn Du einmal a.equals(b) getestet hast, musst Du nicht nochmal b.equals(a) testen. In dem Fall könntest Du
Java:
for (int i = 0, n = recs.size(); i < n - 1; i++) {
    for (int j = i + 1; j < n; j++) {
        if (!recs.get(i).equals(recs.get(j))) {
            ...
        }
    }
}
schreiben.

Ansonsten kannst Du natürlich auch einfach beide Indizes von 0 bis n-1 laufen lassen und zusätzlich auf Ungleichheit prüfen.
 
Ich glaube nicht, dass mit dem Begriff "testen" hier ein Unit-Test gemeint ist.
Wenn ich dir sage, dass ich in einer Methode in einem Service "teste", ob der User eine mindestens 6-stellige Zahl eingegeben hat, dann assoziierst du das doch hoffentlich nicht mit: "Unit-Tests sollten keine interaktiven User-Eingaben benötigen."
 

Neue Themen


Zurück
Oben