Hazamelistan

Dies und Das seit 2001

Von Java über-List-et

Auch wenn ich den Spaß nicht erst seit gestern mache, Java hat es mal wieder geschafft mir zu demonstrieren, wer hier der Herr im Haus ist und wer in unserer Hass-Liebe-Beziehung die Hosen an hat.

Nicht ich!

Was hat es dazu gebraucht? Nicht mehr als eine simple ArrayList, die ich durchlaufen sollte um eventuelle Items, die dort nichts zu suchen haben, nach einem bestimmten Algorithmus auszusortieren.

Schritt 1: Durchlaufen der ArrayList mit einem Iterator

Hat super geklappt. Im ersten Schritt.

So lange, wie ich nichts aus der ArrayList rausgelöscht habe. Denn spätestens dann war bei Java der Ofen aus und die Runtime hat mir höflich aber bestimmt mitgeteilt, dass sie jetzt keine Lust mehr hat, weil sie auch nicht mehr so Recht weiß, wo sie weitermachen soll.

Wie auch? Habe ich ihr doch mehr oder weniger ihren Pointer unterm Arsch weggelöscht

Schritt 2: Ersetze Iterator mit Hilfsvariable

Gut, dann machen wir das ganze eben voll old school und so. Mit der berühmt-berüchtigten Variable „int i = 0“ und der Methode size() als Bedingung.

Trifft die Logik nicht zu, dann machen wir einen remove auf die Liste und killen das Item mal fix.

Je größer die Anzahl der Testfälle wurde, desto mehr habe ich gemerkt, dass da irgendwas nicht stimmen kann.

Geschickt wie ich bin habe ich gleich 2 Fehler gemacht:

1. Die Größe der ArrayList nicht in eine Variable geschrieben sondern dynamisch aus der Funktion ausgelesen.

Der Zähler wurde also größer und die Größe der Liste mit Anzahl der gelöschten Sätze aus der Liste kleiner.

Kurz: Ich habe mal frech einfach Sätze übersprungen, die dann durch das Löschen nach vorne gerutscht sind.

2. Größe der Liste in Variable ausgelagert, bevor ich anfange zu löschen

Auch keine gute Idee… das Grundproblem, dass die Liste immer kleiner wird, ist nämlich bestehen geblieben (Von mir unentdeckt). Es kam also was kommen musste:

Out-of-Bounds-Exception!

Danke auch…

Schritt 3: Benutzen einer zweiten Liste

Genialerweise bin ich dann doch auf die Idee gekommen, vielleicht die Datensätze nicht zu löschen, sondern die Treffer in eine zweite Liste zu schreiben.

Ergebnis: Verarbeitet Daten: 0

Schritt 4: Füllen der zweiten Liste an der richtigen Stelle durchführen

In einem geistig fragilen Moment habe ich einfach das remove durch ein add ausgetauscht. Somit habe ich alle Datensätze, die ich nicht verschicken wollte (glücklicherweise) auch nicht in die Liste geschrieben.

Kurzes Anpassen der Bedingung und der Logik und…

DIE SCHEISSE GEHT!!!

So… ich geh mich jetzt in die Ecke schämen!

Weiter Beitrag

Zurück Beitrag

© 2020 Hazamelistan

Thema von Anders Norén