Schleife mit :

jf

Bekanntes Mitglied
Hallo, ich möchte eine Klasse schreiben, über welche ich mittels
Java:
	for(String item : myClassInstance) {
						
	}
iterieren kann. Muss ich dazu ein spezielles Interface implementieren?
 
G

Gast2

Gast
Nein aber du brauchst nicht eine myClassInstance sondern ein Collections Objekt gefüllt mit deiner Klasse. z.B. sowas:

Java:
List<MyClass> myClassList = new ...

for (MyClass instance : myClassList) {
}


Theoretisch zwar richtig aber wieso den Aufnwand? Pack deine Klassen Instanzen wie gesagt in eine der Colelctions (Oder auch Array geht genauso) und iterier dadrüber.
 
B

bygones

Gast
Nein aber du brauchst nicht eine myClassInstance sondern ein Collections Objekt gefüllt mit deiner Klasse. z.B. sowas:

Java:
List<MyClass> myClassList = new ...

for (MyClass instance : myClassList) {
}



Theoretisch zwar richtig aber wieso den Aufnwand? Pack deine Klassen Instanzen wie gesagt in eine der Colelctions (Oder auch Array geht genauso) und iterier dadrüber.
deine loesung ist korrekt, wenn es darum geht mehrere Instanzen einer Klasse zu haben.

wenn man aber eine Klassenstruktur hat, also 1 Instanz, die von der struktur her iterierbar ist, dann ists Iterable.

sind 2 verschiedene Aspekte
 
G

Gast2

Gast
Habt ja recht ^^

Ich schreibe halt nahezu nie eine eigene iterierbare Klasse, ist das denn wirklich so üblich?
 

Tobias

Top Contributor
Was heißt schon üblich? Es ist halt danach gefragt worden und Iterable zu implementeren ist weder besonders schwer noch abwegig. Wenn ich eine Klasse schreiben würde, die auch nur ansatzweise Ähnlichkeiten mit einer Collection von was auch immer hat, würde ich Iterable implementieren, allein um einen bequemen Weg zu eröffnen über die enthaltenen Elemente zu iterieren.
 

jf

Bekanntes Mitglied
Halle, vielen Dank für eure Antworten.

Wenn ich Iterator einsetze, erhalte ich an der oben geannten Scheife den Fehler
Can only iterate over an array or an instance of java.lang.Iterable

Iterable erfordert nur die Implementierung einer einzigen Methode: iterator(), welche ein Objekt vom Typ Iterator zurückliefern muss. Wie muss das nun implementiert werden? - Ich habe dazu leider kein Beispiel gefunden...


ist das denn wirklich so üblich?
Du hattest bisher eben noch nicht den Fall, dass es Sinn macht, über eine Klasse zu iterieren.
Ich habe eine UI-Klasse mit einer Liste. Diese kann eine Art Kind von sich selber erzeugen. Das Kind sucht dann in der Liste seiner Elternklasse, um teile davon in seiner eigenen Liste darzustellen. Für diese Suche ist die Iterations-Möglichkeit halt recht praktisch. - Solch ein Anwendungsfall ist aber schon recht speziell und daher sicher nicht besonders üblich. Wenn dann doch solch eine Anwendung gefragt ist, dann halte ich es schon für sinnvoll (und daher auch üblich) eine solche Iteraterations-Möglichkeit zu implementieren.
 

Landei

Top Contributor
Mal ein Beispiel (ungetestet):

Java:
public class Winners implements Iterable<String> {
   public final String gold;
   public final String silver;
   public final String bronze;
  
    public Winners(String gold, String silver, String bronze) {
       this.gold = gold;
       this.silver = silver;
       this.bronze = bronze;
    }

    public Iterator<String> iterator() {
        return new Iterator<String>() {
            private int count = 0;
            public boolean hasNext() { return count < 3; }
            public String next() {
               switch(count++) {
                  case 0 : return gold;
                  case 1 : return silver;
                  case 2 : return bronze;   
                  default : throw new NoSuchElementException(); 
               }
            }
            public void remove() { throw new UnsupportedOperationException(); }
        }
    }
}

Natürlich hat man auch oft den Fall, dass man intern irgend eine Collection (oder Map) hält, und dann deren Iterator (bzw. den von deren keyset oder values) zurückgeben kann. Oder man hat intern ein Array, für das man mit Arrays.asList(meinArray).iterator() einen Iterator bastelt.
 
Zuletzt bearbeitet:
G

Gast2

Gast

jf

Bekanntes Mitglied
Sortry aber Google liefert da echt nen haufen...
... Mist - das ist Richtig!

4 Treffer deiner Google-Suche (darunter die ersten 2) waren übrigens als bereits besucht markiert.
In deiner Google-Treffer-Liste war auch ein Treffer, welche genau deine Suchbegriffe enthielt:
Beispiel Iterator Java

Tut mir leid, aber mit dem Beispiel von Landei bin ich da schon viel weiter gekommen. Vielen Dank hierfür.

Allerdings bin ich doch noch nicht ganz am Ende:
ich habe nun Iterable<Object> in meinem JList-Wrapper implementiert, welchen ich in meine UI-Klasse einsetze (Komposition). Jetzt soll diese Klasse auch Iterable sein - allerdings mit <String> und remove() soll im Gegensatz zum JList-Wrapper eine UnsupportedOperationException werfen.
Wie überlade ich dieses Iterator-Objekt vom JList-Wrapper? - Ich kann ja nur dieses weitergeben.
Oder muss ich im JList-Wrapper dann doch noch Iterator implementieren, so dass ich in der UI-Klasse einen neuen Iterator unter Verwendung von hasNext() und next() des JList-Wrappers aufbauen kann?


PS: in den Treffern meiner Google-Suche habe ich unter elf Seiten leider nicht die passende Information gefunden. Ich kein Google verwenden, auch waren deine gewählten Suchbegriffe nicht unbedingt viel besser. Da ich nun die Info von Landei habe, ersparte ich mir die Analyse deines Suchvorschlages. :p
 
Zuletzt bearbeitet:
G

Gast2

Gast
... Mist - das ist Richtig!

4 Treffer deiner Google-Suche (darunter die ersten 2) waren übrigens als bereits besucht markiert.
In deiner Google-Treffer-Liste war auch ein Treffer, welche genau deine Suchbegriffe enthielt:
Beispiel Iterator Java

Tut mir leid, aber mit dem Beispiel von Landei bin ich da schon viel weiter gekommen. Vielen Dank hierfür.

Das was du da zitierst war nicht MEINE Google Suche, sondern die von dem Poster nach mir!

ICH habe 3 KONKRETE Beispielartikel gepostet. Guck mal genau nach ...
 

Landei

Top Contributor
Wie überlade ich dieses Iterator-Objekt vom JList-Wrapper?

Du kannst aus einem Iterator<Object> durch Vererbung keinen Iterator<String> machen. Dir ist aber erlaubt, einen Iterator zu "wrappen" (also eine Form der Komposition, bei der hauptsächlich mit Delegation gearbeitet wird):

Java:
public class ToStringIterator implements Iterator<T> {
    private final Iterator<T> it;
    public ToStringIterator(Iterator<T> it) {
       this.it = it;  
    }
    public boolean hasNext() { return it.hasNext(); } //Delegation
    public String next() { return it.next().toString(); } //Delegation mit modifiziertem Verhalten
    public void remove() { throw new UnsupportedOperationException(); } // eigene Implementierung
}

Mit dieser Klasse kannst du einen anderen Iterator beliebigen Typs "einwickeln" ("wrappen"). Ob die Ergebnisse sinnvoll sind, hängt hier natürlich davon ab, ob Typ T auch eine vernünftige toString()-Implementierung besitzt.
 

jf

Bekanntes Mitglied
Es funktioniert! :) - Vielen Dank!
Jetzt weiß ich endlich auch, was mit Delegation gemeint ist. :D

Die toString()-Implementierung sollte bei dem Objekt aus dem JList-Wrapper auf jeden Fall vorhanden sein - ansonsten würde es ja in der JList schon nicht dargestellt werden können. In der Regel dürfte es sich bei den Objekten sogar um reine String-Instanzen handeln.

Kann man hier von einer Art "Casting" von Iterator<Object> nach Iterator<String> sprechen?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Verschachtelte For-Schleife gibt falschen Wert zurück, Abbruchbedingung evtl. falsch? Allgemeine Java-Themen 9
A verschachtelte for-Schleife in einen Stream umwandeln? Allgemeine Java-Themen 4
A Wie schreibe ich eine For-Schleife in ein Stream API um? Allgemeine Java-Themen 12
W While Schleife funktioniert nicht ganz Allgemeine Java-Themen 4
H do-while Schleife funktioniert nicht wie ich es möchte Allgemeine Java-Themen 7
MangoTango Operatoren while-Schleife für Potenz Allgemeine Java-Themen 3
berserkerdq2 Wie synchronisiere ich eine for-Schleife Allgemeine Java-Themen 12
N Warum wird die For Schleife nicht betreten Allgemeine Java-Themen 4
M Schleife für einen TicTacToe Computer Allgemeine Java-Themen 5
Lukas2904 Schleife mit ansteuerung einer Klasse Allgemeine Java-Themen 5
A For-Schleife Allgemeine Java-Themen 5
J Algorithmen Analyse einer Schleife Allgemeine Java-Themen 6
1 Klassen Variabel aus Schleife übergeben Allgemeine Java-Themen 8
D "Automatisierte", variable verschachtele for-Schleife Allgemeine Java-Themen 9
F Schleife funktioniert nicht richtig Allgemeine Java-Themen 13
K For-Schleife <> oder != Operator verwenden? Allgemeine Java-Themen 2
J Einen Thread in einer Schleife Allgemeine Java-Themen 2
D While-Schleife - if Zweig unterbrechen Allgemeine Java-Themen 1
F Zweifache For-Schleife Allgemeine Java-Themen 6
P Operatoren Problem mit Zähler in recursiver Schleife Allgemeine Java-Themen 2
T String aus While Schleife für ganze Klasse sichtbar machen Allgemeine Java-Themen 5
M While-Schleife schneller, solange die Abbruchbedingung nicht vom Schleifeninneren abhängt Allgemeine Java-Themen 3
S Variablen String[] Array per schleife in int[] einlesen Allgemeine Java-Themen 8
D Methoden Buttons erscheinen doppelt nach Wiederholung in Schleife Allgemeine Java-Themen 1
RalleYTN Problem bei Schleife die durch einen 2D raum iterieren soll Allgemeine Java-Themen 1
T for - Schleife Allgemeine Java-Themen 1
J While Schleife ausführen bis Zahl = X Allgemeine Java-Themen 19
R Komplizierte Schleife Allgemeine Java-Themen 1
Q For-Schleife in String-Value Allgemeine Java-Themen 3
F Abstrakte Klasse in "For each" Schleife Allgemeine Java-Themen 1
F for-Schleife auf Kommandoebene ausgeben Allgemeine Java-Themen 9
P Input/Output java.util.Scanner in einer Schleife und Exception-Behandlung: Einlesen einer Zahl Allgemeine Java-Themen 4
P Erweiterte For Schleife Allgemeine Java-Themen 7
D Arraylist/For Schleife/Scanner Allgemeine Java-Themen 30
Y automatisierte for Schleife Allgemeine Java-Themen 13
B For schleife und weiter? Allgemeine Java-Themen 8
D Probleme bei for-Schleife Allgemeine Java-Themen 4
L einfache Verzinsung mit for-Schleife & Ausschluss von Werten beim Einlesen Allgemeine Java-Themen 5
N Frage zur while-Schleife Allgemeine Java-Themen 18
M for Schleife mit Swing Button abbrechen Allgemeine Java-Themen 7
M PdfPTable per for-Schleife befüllen Allgemeine Java-Themen 3
F for-Schleife mit : Allgemeine Java-Themen 5
S Pattern.Match Suche: For Schleife einbinden und in Liste schreiben Allgemeine Java-Themen 3
W Problem mit Index in einer for-Schleife Allgemeine Java-Themen 8
A Collections Array-Elemente in ArrayList kopieren ohne Schleife Allgemeine Java-Themen 7
P Variablen Auf durch for-Schleife generierte JComboBox zugreifen Allgemeine Java-Themen 3
G while Schleife ausführen solange eine Taste gedrückt ist Allgemeine Java-Themen 14
F Foreach und for - Schleife Allgemeine Java-Themen 10
W Berechnung Durchschnitt mit Schleife Allgemeine Java-Themen 9
S for-Schleife, while-Schleife Problem Allgemeine Java-Themen 6
H Netbeans Warning bei Thread.sleep in Schleife Allgemeine Java-Themen 4
A java.lang.NullPointerException bei Schleife Allgemeine Java-Themen 3
S Erste Schritte Exception beendet Schleife nicht - Methode macht trotz throw weiter? Allgemeine Java-Themen 9
R while schleife auf 3 durchgänge beschränken Allgemeine Java-Themen 6
V anstatt thread.join() einfach while schleife? Allgemeine Java-Themen 8
x22 for-Schleife Allgemeine Java-Themen 76
S Text in for Schleife in Label einfügen Allgemeine Java-Themen 4
S Klassen in einer Schleife durchlaufen Allgemeine Java-Themen 11
E Schleife wird nicht ausgeführt!!! Allgemeine Java-Themen 8
C Schleife mit leerem Anweisungsblock wird trotz erfüllter Bedingung nicht verlassen Allgemeine Java-Themen 9
S Do-While Schleife bricht nicht ab Allgemeine Java-Themen 3
S Erste Schritte if-Anweisung in for- oder while-schleife umwandeln Allgemeine Java-Themen 3
K CheckBox schleife Allgemeine Java-Themen 2
D Methoden Thread Schleife Status Allgemeine Java-Themen 7
J Verschiedene Klassen als "Object" in ArrayList und dann in for-Schleife erzeugen!? Allgemeine Java-Themen 2
R In einer for Schleife bei einem Substring anfangen, wo man davor aufgehört hat Allgemeine Java-Themen 6
T Rekursion mit While Schleife kombinieren? Allgemeine Java-Themen 4
D Sterne Muster mit einer Schleife Allgemeine Java-Themen 5
Dragonfire Code Konvention for-Schleife / return Allgemeine Java-Themen 15
hdi Detail-Frage zur for-Schleife Allgemeine Java-Themen 9
J Thread pausieren, lange while-Schleife Allgemeine Java-Themen 8
Q Variable aus Schleife/Switch benutzen Allgemeine Java-Themen 7
J Erweiterte For-Schleife mit Vector Allgemeine Java-Themen 5
C Geschachtelte For-Schleife: Äußere Schleife wird nur einmal durchlaufen!? Allgemeine Java-Themen 3
W While-ESC-Schleife funktioniert nicht Allgemeine Java-Themen 3
W return Collection mit schleife durchsuchen Allgemeine Java-Themen 10
H Threads.... ich will aus der While-Schleife raus Allgemeine Java-Themen 6
calzone Warum wird nicht aus der Schleife gesprungen ? Allgemeine Java-Themen 2
lacyuu Schleife hängt sich auf, wieso?? Allgemeine Java-Themen 2
ModellbahnerTT Problem: Schleife über Textdatei Allgemeine Java-Themen 5
S Wie gross ist die Laufzeit für diese Schleife?? Allgemeine Java-Themen 8
J Schachbrett mit for- oder while-Schleife Allgemeine Java-Themen 22
I For- Schleife falsch? Allgemeine Java-Themen 8
T Schleife kurzzeitig anhalten Allgemeine Java-Themen 5
V Problem in While-Schleife Allgemeine Java-Themen 3
Escorter Switch in der Schleife! Allgemeine Java-Themen 4
C Auswertung der for each schleife? Allgemeine Java-Themen 2
GilbertGrape foreach Schleife Allgemeine Java-Themen 12
J FOR-Schleife-Problem Allgemeine Java-Themen 10
G Schleife durch Button beenden Allgemeine Java-Themen 6
S Schleife funktioniert nicht Allgemeine Java-Themen 2
G Anonymen Buttons in for schleife ActionListener hinzufügen Allgemeine Java-Themen 5
T getParameter in while schleife Allgemeine Java-Themen 3
O while - Schleife unterbrechen mit break; Allgemeine Java-Themen 5
R array.length in For-Schleife verwenden? Allgemeine Java-Themen 22
V Schleife funktioniert nicht wie gewünscht Allgemeine Java-Themen 5
T Schleife im Konstruktor? Allgemeine Java-Themen 9
S Schleife mit Durchlaufrate Allgemeine Java-Themen 5
R Per for schleife string propertys in einer datei speichern Allgemeine Java-Themen 15
H In Testklasse Objekte erzeugen und in einer Schleife ausgebe Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben