Iterator Interfacve

OnDemand

Top Contributor
Hi,

kann mir jemand helfen? In einer Aufgabe sollen wir verschiedene Objekte in einer List "anmelden" und wieder löschen sobald die Objekte geschlossen werden soweit kein Problem. Als Zusatzinformation steht aber noch: "beachten Sie das das Iterator-Objekt inkonsistent wird, wenn Sie die Objekte direkt aus der Liste entfernen".

Ich kann in der API nix finden, dass Iterator inkonsistent wird?! Hat jemand ne Idee, was damit gemeint sein kann?

LG
 

Thallius

Top Contributor
Ich nehme an das soll Dich nur darauf hinweisen, dass man z.B. mit einem foreach keine Elemente aus der Liste entfernen kann, da in dem Fall der Iterator inkonsistent wird.

Gruß

Claus
 

OnDemand

Top Contributor
Hi, mit Iteration.clear() meine ich meinen Iterator/Liste zu clearen also quasi:

Java:
iterator = list.iterator();
iterator.clear();

Nun, das an und abmelden klappt wunderbar (also adden und removen aus der List)

Aber noch ne Frage, warum erhalte ich ArrayIndexOutOfBoundsExe, wenn ich das -1 in der for-Schleife wegnehme?

Java:
private JMenuItem getJmiCloseWindows() {
	JMenuItem jmiCloseWindows = new JMenuItem("Alle Fenster schließen");
	jmiCloseWindows.addActionListener(new ActionListener() {
	    public void actionPerformed(ActionEvent e) {

		for (int i = 0; i <= list.size()-1; i++) {
		    list.iterator();
		    while (list.iterator().hasNext() == true) {
			list.get(i).dispose();
			break;
		    }
		}
		list.clear();
		System.out
			.println("Elemente in Liste nach Operation \"Alle Fenster schließen\" "
				+ list.size());

	    }
	});
 
Zuletzt bearbeitet:

OnDemand

Top Contributor
Length hat den Index des letzten Objekts, -1 weil ein Array bei Null anfängt ? :applaus:
 
Zuletzt bearbeitet:

stg

Top Contributor
Java:
        for (int i = 0; i <= list.size()-1; i++) {
            list.iterator();
            while (list.iterator().hasNext() == true) {
            list.get(i).dispose();
            break;
            }
        }
        list.clear();

....ach herrje, was soll das denn werden? :eek:

Mal Hand aufs Herz, verstehst du, was der Code, den du da geschrieben hast, macht? Oder hast du einfach nur herumprobiert, bis irgendwann zufällig das gewünschte Ergebnis eintritt? Ich bin gerade ein bisschen sprachlos und weiß gar nicht, wo cih anfangen soll. Aber .. .wie auch immer deine Antwort ausfällt. Diesen Code-Abschnitt musst du definitiv noch einmal komplett überdenken und neu schreiben!
 

OnDemand

Top Contributor
3 Jahre Java? Ach solange wie ich hier angemeldet bin..naja wenn du meinst zu wissen wie lange ich es lerne hast du natürlich recht.
 

OnDemand

Top Contributor
@stg ich verstehe es so, wie ich es geschrieben habe und es tut auch das was es soll! Man kann es sicherlich einfacher schreiben, aber um himmels willen, ich lerne noch!

Wer etwas vereinfachendes beitragen kann, ich bin für alles offen. Andernfalls muss ich euch leider sagen, dass ich nur das verwenden kann, was ich mir aus den Heften aneignen kann.

Ihr schafft es echt immer wieder einem die Motivation zu nehmen...fast :D

edit: die Zeile 2 ist sinnlos, die gibts schon garnicht mehr und das == true kommt auch weg :)
 
Zuletzt bearbeitet:

stg

Top Contributor
Ist dir auch klar, dass du zweimal so viele Iteratoren erzeugst, wie es Elemente in deiner Liste gibt? Und das, obwohl du diese hinterher eigentlich überhaupt nicht benutzt? ;)
 

OnDemand

Top Contributor
Ach du s*****e, jetzt weiß ich glaube was du meinst. In der schleife wird es ständig erzeugt, es reicht einmal vor schleifeneintritt richtig? :-/
 

stg

Top Contributor
Du hast da insgesamt ein totales durcheinander ... :(

Fassen wir mal zusammen. Du hast eine Liste (von JFrames oder was auch immer) und möchtest nun einmal über diese Liste laufen und dabei irgendwas tolles auf jedem dieser Objekte anstellen. Da sollte dir sofort ins Auge springen, dass dafür eigentlich eine Schleife, in der du über die gesamte Liste iterierst, ausreichen sollte. Du hast hier aber zwei verschachtelte Schleifen ... wozu?

Nun hast du verschiedene Möglichkeiten über die Liste zu iterieren. Du kannst dir zum Beispiel mal hier: How to loop / iterate a List in Java verschiedene Varianten dazu anschauen. Allgemein lässt sich aber schon mal sagen: Entweder greifst du direkt auf das jeweilige Listenelement zu (mittels
Code:
list.get(i)
), oder aber du holst dir über den Iterator das jeweils nächste Listenelement (mittels
Code:
it.next()
)

Beides ist möglich und je nach Kontext ist eine Variante der anderen überlegen. Wenn du zum Beispiel während der Iteration über eine Liste bereits Element aus dieser Liste entfernen willst, dann solltest du das über den Iterator und seine
Code:
#remove()
-Methode machen.
 

stg

Top Contributor
Eine mögliche Variante über den Iterator zu gehen, sähe zum Beispiel so aus:

Java:
for (Iterator<JFrame> it = list.iterator(); it.hasNext(); ) {
    JFrame jf = it.next();
    jf.dispose();
}
lsit.clear();
 

OnDemand

Top Contributor
Achso.. Mich verwirrt eben die ursprüngliche Aussage, dass das Iterator Objekt inkonsistent wird, wenn man Elemente direkt raus nimmt. Also besser nicht über die remove vom Iterator? Ich frag morgen nochmal genauer nach, was damit gemeint ist.
Aber vermutlich soll man nicht mit remove gehen sondern mit get
 
Zuletzt bearbeitet:

stg

Top Contributor
Achso.. Mich verwirrt eben die ursprüngliche Aussage, dass das Iterator Objekt inkonsistent wird, wenn man Elemente direkt raus nimmt. Also besser nicht über die remove vom Iterator? Ich frag morgen nochmal genauer nach, was damit gemeint ist.
Aber vermutlich soll man nicht mit remove gehen sondern mit get

Wenn du Objekte direkt aus der Liste entfernst!

Java:
for (Iterator<JFrame> it = list.iterator(); it.hasNext(); ) {
    JFrame jf = it.next();
    jf.dispose();
    it.remove();  // Aktuelles Element wird per remove 
                         // vom Iterator entfernt: OK!
}


Java:
for (Iterator<JFrame> it = list.iterator(); it.hasNext(); ) {
    JFrame jf = it.next();
    jf.dispose();
    list.remove(jf);  // Aktuelles Element wird direkt aus 
                             // der Liste entfernt: NICHT OK!
}
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
N Kann man einen Iterator nur einmal verwenden Java Basics - Anfänger-Themen 5
N Warum Springt iterator nur in der Schleife weiter Java Basics - Anfänger-Themen 9
volcanos HashSet und Iterator -> Falsche Sortierreihenfolge ? Java Basics - Anfänger-Themen 18
J Methoden Die Reihenfolge der Iterator-Elemente umkehren Java Basics - Anfänger-Themen 3
J Methoden iterator for-schleife (hasNext() ) Java Basics - Anfänger-Themen 7
Stargirlxo Iterator + Methode Java Basics - Anfänger-Themen 10
G Java Listen und Iterator Java Basics - Anfänger-Themen 2
U Hashmap Iterator selbst implementieren Java Basics - Anfänger-Themen 10
F nur das erste Element mit iterator ausgeben Java Basics - Anfänger-Themen 5
O Iterator erneut! Java Basics - Anfänger-Themen 8
O Iterator für eine geordnete Menge Java Basics - Anfänger-Themen 134
J Doppelte Ausgabe erzeugen Iterator Java Basics - Anfänger-Themen 6
K Iterator zurückliefern Java Basics - Anfänger-Themen 8
W Eigener Iterator soll mehrdimensionales Array durchlaufen Java Basics - Anfänger-Themen 4
S Iterator einer Liste Java Basics - Anfänger-Themen 4
B Sortieren mit Iterator Java Basics - Anfänger-Themen 4
I Erste Schritte Iterator Java Basics - Anfänger-Themen 3
M Iterator funktioniert nicht Java Basics - Anfänger-Themen 5
M Iterator cannot refer to a non final... Java Basics - Anfänger-Themen 20
O Interface Iterator Java Basics - Anfänger-Themen 2
M Collections Frage Beispielprogrammierung Iterator Java Basics - Anfänger-Themen 13
M Iterator Java Basics - Anfänger-Themen 25
J Iterator Funktioniert nicht richtig in StackImplementierung Java Basics - Anfänger-Themen 3
Z Hashmap Iterator löscht nicht Java Basics - Anfänger-Themen 8
L Iterator Java Basics - Anfänger-Themen 1
K Nutzung einer Klasse die das Iterator-Interface implementiert Java Basics - Anfänger-Themen 0
K Iterator-Interface implementieren mit Exception Handlung Java Basics - Anfänger-Themen 1
M Collections Iterator und generischer Baum Java Basics - Anfänger-Themen 0
O Kleine Frage zu Iterator und Iterable Java Basics - Anfänger-Themen 6
S Iterator next() Nullpointer Java Basics - Anfänger-Themen 2
T Methoden Iterator über ArrayList Java Basics - Anfänger-Themen 3
W Iterator Java Basics - Anfänger-Themen 2
D Aufgabe: Stack mit Iterator Java Basics - Anfänger-Themen 8
R Mit iterator auf Element zugreifen Java Basics - Anfänger-Themen 2
T Collections Zugriff auf Elemente aus Iterator() Schleife Java Basics - Anfänger-Themen 4
P Casting Warning bei Iterator Java Basics - Anfänger-Themen 32
F Wie Werte einer ArrayList an einen 'Custom'-Iterator übergeben? Java Basics - Anfänger-Themen 2
J Iterator Java Basics - Anfänger-Themen 5
P ArrayList mit Iterator / Iterable ausgeben Java Basics - Anfänger-Themen 8
B Funktionsweise Iterator unklar Java Basics - Anfänger-Themen 7
A Datentypen Iterator von hinten nach vorne durchlaufen Java Basics - Anfänger-Themen 4
D Wie Iterator Remove implementieren? Java Basics - Anfänger-Themen 11
B Datentypen Inhalt zum Iterator wieder aufrufen? Java Basics - Anfänger-Themen 10
D Iterator schaltet nicht weiter?! Java Basics - Anfänger-Themen 5
A Problem mit Iterator Java Basics - Anfänger-Themen 2
B Türme von Hanoi - Iterator Java Basics - Anfänger-Themen 50
V Hilfe beim implementieren von Iterator Java Basics - Anfänger-Themen 5
W Collections Iterator<E> Java Basics - Anfänger-Themen 7
L Lokale Variable und Instanzvariable innerhalb Iterator Java Basics - Anfänger-Themen 8
W OOP problem mit iterator! -.- Java Basics - Anfänger-Themen 9
B Iterator und Collection Java Basics - Anfänger-Themen 11
ruutaiokwu Iterator oder .size ??? Java Basics - Anfänger-Themen 6
vandread Iterator zählt nicht hoch?! Java Basics - Anfänger-Themen 3
L Problem mit Iterator bzw. Sortierte Liste Java Basics - Anfänger-Themen 14
N HashMap mit Iterator durchlaufen Java Basics - Anfänger-Themen 11
R Iterator Liste, Verständnisproblem Java Basics - Anfänger-Themen 4
J Verschachtelte for-Schleife mit Löschen von Iterationen. Wie über Iterator abbilden? Java Basics - Anfänger-Themen 6
M Iterator Java Basics - Anfänger-Themen 15
L Implementation gesucht - ArrayList.iterator() Java Basics - Anfänger-Themen 3
M Eigener Iterator für LinkedList Java Basics - Anfänger-Themen 20
pun Iterator über ArrayList Java Basics - Anfänger-Themen 12
P Iterator.add() Java Basics - Anfänger-Themen 3
A For Schleife - Iterator wird null Java Basics - Anfänger-Themen 7
? Map und iterator Java Basics - Anfänger-Themen 11
0x7F800000 ungereimtheiten mit Iterator/ListIterator Java Basics - Anfänger-Themen 2
N "Dynamischer" Iterator Java Basics - Anfänger-Themen 21
J Iterator remove()? Java Basics - Anfänger-Themen 5
T Liste mit Iterator auslesen Java Basics - Anfänger-Themen 11
Kr0e Iterator Java Basics - Anfänger-Themen 2
D iterator instanziieren! Java Basics - Anfänger-Themen 11
M Der Umgang mit Iterator - Wie ein Objekt aus einer ArrayList Java Basics - Anfänger-Themen 2
J ArrayList mit Iterator Java Basics - Anfänger-Themen 3
W Iterator in Queue Java Basics - Anfänger-Themen 5
A Für was Iterator ? Java Basics - Anfänger-Themen 3
M warum interface iterator verwendbar? Java Basics - Anfänger-Themen 5
O Iterator - Durchlauf "einschränken" bzw. steuern&q Java Basics - Anfänger-Themen 2
K Collection und Iterator Java Basics - Anfänger-Themen 7
Q Iterator next erstellen Java Basics - Anfänger-Themen 4
S iterator problem Java Basics - Anfänger-Themen 3
S Iterator --__-- Zugriff auf nächstes Element Java Basics - Anfänger-Themen 5
N Set + Iterator oder doch nur zu blöd API zu lesen Java Basics - Anfänger-Themen 32
R Java 5.0 neue For schleife Iterator was ist der fehler? Java Basics - Anfänger-Themen 5
N generische HashMap und Iterator Java Basics - Anfänger-Themen 2
R Iterator und HashMap Java Basics - Anfänger-Themen 10
G Probleme mit Iterator Java Basics - Anfänger-Themen 2
E umgededrehte if anweisung funzt nicht , iterator. Java Basics - Anfänger-Themen 2
A Iterator, wie funkioniert das richtig? Java Basics - Anfänger-Themen 6
S Iterator Schreibweise Java Basics - Anfänger-Themen 7
P ArrayList, iterator: Fehler in while Schleife Java Basics - Anfänger-Themen 2
T Iterator Java Basics - Anfänger-Themen 8
G Frage zur Iterator ? Java Basics - Anfänger-Themen 12
A Iterator auf anfang setzen Java Basics - Anfänger-Themen 5
blackfeet Bildfadeffekt (Halptransparenz) & iterator Java Basics - Anfänger-Themen 8
C Problem mit verschachteltem Iterator Java Basics - Anfänger-Themen 2
R Problem mit Iterator Java Basics - Anfänger-Themen 6
M Problem mit Iterator.remove() Java Basics - Anfänger-Themen 5
R Enumeration oder Iterator? Java Basics - Anfänger-Themen 2
J Klasse Iterator Java Basics - Anfänger-Themen 5
D unregelmäßige NullPointerException bei LinkedList Iterator? Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben