Iteration - Alte und neue For Schleife

kossy

Bekanntes Mitglied
Hallo !

Ich habe mal eine Frage zu den Iterationen über eine beliebige Datenstruktur mit einer For Schleife. Hier ist die Variante mit einer For Schleife vor der Java 5 Version:

Java:
public Textmodul getTextModulFromList(String textModulKey){		
    for(int i = 0; i < this.textModulList.size(); i++){		
       Textmodul currentTextModul = (TextModul) textModulList.get(i);			
       if(currentTextModul.getTextModulKey.equalsIgnoreCase(textModulKey)){
          return currentTextModul;		
       }		
    }		
}

Wie genau iteriert man jetzt eigentlich über eine For-Schleife in der Java Version >=5 ? Wie wird das dort mit dem "Casten" gehandhabt?

Danke für die Info !

Grüße
Kossy
 

jwiesmann

Bekanntes Mitglied
Wenn deine Liste vom typ
Code:
List<Textmodul> textModulList
wäre, würde es wie folgt funktionieren:

Java:
public Textmodul getTextModulFromList(String textModulKey){     
    for (Textmodul currentTextModul : this.textModulList){
       if(currentTextModul.getTextModulKey.equalsIgnoreCase(textModulKey)){
          return currentTextModul;      
       }        
    }       
}

Gruß
 

kossy

Bekanntes Mitglied
Hallo !

Danke für die Antwort. Bedeutet das also, dass Java den Cast nun implizit durchführt und ich mich als Entwickler nun gar nicht mehr darum kümmern muss?

Grüße
Kossy
 
H

hüteüberhüte

Gast
Hier ist die Variante mit einer For Schleife vor der Java 5 Version

Vor Java 5 hat man das auch nicht mit einer for gelöst, sondern einen Iterator verwendet:

Java:
        List<String> strings = new ArrayList<String>(Arrays.asList("foo", "bar"));

        Iterator<String> iter = strings.iterator();
        while (iter.hasNext()) {
            System.out.println(iter.next());
        }

        for (int i = 0; i < strings.size(); i++) {
            System.out.println(strings.get(i));
        }

        for (String s : strings) {
            System.out.println(s);
        }

Gibt dreimal
Code:
foo
bar
aus
 
B

bygones

Gast
Vor Java 5 hat man das auch nicht mit einer for gelöst, sondern einen Iterator verwendet:

Java:
        List<String> strings = new ArrayList<String>(Arrays.asList("foo", "bar"));

        Iterator<String> iter = strings.iterator();
        while (iter.hasNext()) {
            System.out.println(iter.next());
        }

        for (int i = 0; i < strings.size(); i++) {
            System.out.println(strings.get(i));
        }

        for (String s : strings) {
            System.out.println(s);
        }

Gibt dreimal
Code:
foo
bar
aus
vor Java 5 gab es keine Generics und wenn man eine List hatte konnte man ueber diese auch vor Java 5 mit einer for schleife iterieren. Natuerlich ist der iterations weg vorzuziehen.
 
H

hüteüberhüte

Gast
vor Java 5 gab es keine Generics und wenn man eine List hatte konnte man ueber diese auch vor Java 5 mit einer for schleife iterieren. Natuerlich ist der iterations weg vorzuziehen.

Von was redest du?

[JAPI]http://docs.oracle.com/javase/6/docs/api/java/util/Iterator.html[/JAPI] :

Alle 3 Möglichkeiten haben ihre Berechtigung. Aber schön, wieder einen vom Pferd erzählt :applaus:
 
H

hüteüberhüte

Gast
Es ist doch völlig egal, wann es Generics gab. Man hat sowohl vor als auch nach Java 5 Iterator verwendet. Die Methoden hasNext(), next() und remove() unterscheiden sich auch überhaupt nicht. Also behaupte bitte nicht, Iterator zu verwenden sei falsch oder was völlig neues. Danke :applaus:
 
M

maki

Gast
Ich denke bygones ging es schlicht darum, dass dein Beispiel einerseits Generics verwendet, aber andererseits darübersteht, dass man das so vor Java 5 gemacht hatte, und das kann eben nicht sein.
 

ThreadPool

Bekanntes Mitglied
Es ist doch völlig egal, wann es Generics gab. Man hat sowohl vor als auch nach Java 5 Iterator verwendet. Die Methoden hasNext(), next() und remove() unterscheiden sich auch überhaupt nicht.

Es ging in dem Kommentar nicht darum ob die Schnittstelle Iterator verwendet wurde oder nicht sondern darum das der folgende Code bei Versionen unter 5 nicht kompiliert da es bis dato keine Generics gab und man immer gezwungen war selbst zu casten da next() ein Object zurücklieferte.


Java:
        List<String> strings = new ArrayList<String>(Arrays.asList("foo", "bar"));
 
        Iterator<String> iter = strings.iterator();
        while (iter.hasNext()) {
            System.out.println(iter.next());
        }

Und damals hätte das hier (Generics entfernt):

Java:
List strings = new ArrayList(Arrays.asList("foo", "bar"));

ebenfalls nicht kompiliert da Arrays.asList() ein Array vom Typ Object erwartet hat.
 
H

hüteüberhüte

Gast
vor Java 5 gab es keine Generics und wenn man eine List hatte konnte man ueber diese auch vor Java 5 mit einer for schleife iterieren. Natuerlich ist der iterations weg vorzuziehen.

Ok, sollte mich korrigieren... Das ist aus dem Zusammenhang gerissen...

Er: "Hier ist die Variante mit einer For Schleife vor der Java 5 Version"

Ich: "Vor Java 5 hat man das auch nicht mit einer for gelöst, sondern einen Iterator verwendet"

Korrekt müsste es lauten: Bevor es for-each gab, hat man entweder einen Iterator verwendet oder eine for-Schleife, wobei aber ein Iterator vorzuziehen ist

Dann du: "vor Java 5 gab es keine Generics" (unnötige Information)
"und wenn man eine List hatte konnte man ueber diese auch vor Java 5 mit einer for schleife iterieren" (aha, hab aber glaub ich nix gegenteiliges behauptet)
"Natuerlich ist der iterations weg vorzuziehen"

Keine Ahnung, was du mit "iterations weg" meinst, aber falls es sich dabei um Iterator handeln sollte, so stimmt diese Aussage ja wieder mit meiner überein

Ich hab mir jetzt zwar extra die Mühe gemacht, den Murks auseinander zunehmen, aber viel hängen bleiben wird bei dir wahrscheinlich eh nicht...

@maki und ThreadPool:
Natürlich würde der Code unter Java < 5 nicht kompilierbar sein, aber es ging darum zu zeigen, wie ein Iterator zu handhaben ist. Würde man Generics entfernen, würde dasselbe hasNext()-next()-Konstrukt übrig bleiben

Das ist mir auch langsam zu stressig hier
 
E

erweitertesFor

Gast
Die erweiterte For-Schleife gibt es erst seit Java 5. Eventuell wollte hüteüberhüte uns das mitteilen. :confused:
 
S

SlaterB

Gast
@hüteüberhüte

deine Sätze
"Also behaupte bitte nicht, Iterator zu verwenden sei falsch"
"Dann du: "vor Java 5 gab es keine Generics" (unnötige Information)"
"Keine Ahnung, was du mit "iterations weg" meinst,"
klingen auch so als ob du die ganze Zeit nur mit bygones redest, dabei antworten inzwischen ganz andere

vielleicht wirklich mal Stress reduzieren, Postings genauer lesen usw.
 
H

hüteüberhüte

Gast
Und damals hätte das hier (Generics entfernt):

Java:
List strings = new ArrayList(Arrays.asList("foo", "bar"));

ebenfalls nicht kompiliert da Arrays.asList() ein Array vom Typ Object erwartet hat.

Na und, was interessiert mich, was irgendwann mal nicht zu kompilieren war? Es ging darum, 3 verschiedene Wege zu verdeutlichen. Nicht mehr nicht weniger
 
E

erweitertesFor

Gast
Und was wolltest du mit diesen drei verschiedenen Wegen verdeutlichen?
Dass diese (nicht) vor Java 5 funktionieren? Oder dass diese besser sind?
 
H

hüteüberhüte

Gast
Vor Java 5 hat man das auch nicht mit einer for gelöst, sondern einen Iterator verwendet

[EDIT]Vor Java 5 konnte man zwischen Iterator und for-Schleife wählen. Heute gibt es 3 verschiedene Möglichkeiten: Iterator, for-Schleife oder foreach. Bei manchen List-Implementierungen sollte man die for-Schleife aber vermeiden (LinkedList z.B.).

Generics und asList(T... a) gab es vor Java 5 auch noch nicht.

Das ist es jetzt hoffentlich "besser" oder verständlicher ausgedrückt.[/EDIT]
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Mehmetaa Iteration Java Basics - Anfänger-Themen 3
Henri Iteration lauft nicht gut Java Basics - Anfänger-Themen 7
Henri Erste Schritte Iteration ändern Java Basics - Anfänger-Themen 12
I Iteration in Feldern Java Basics - Anfänger-Themen 2
C Compiler-Fehler Wird eine if Bedingung nach einer for-Schleife nach jeder Iteration überprüft? Java Basics - Anfänger-Themen 1
F Array Iteration Java Basics - Anfänger-Themen 4
M Löschen von Objekten während Iteration über Liste Java Basics - Anfänger-Themen 9
K Stammbaum durchlaufen (Iteration etc) Java Basics - Anfänger-Themen 9
D Rekursion in Iteration Java Basics - Anfänger-Themen 5
A ArrayList-iteration mit Prüfung auf instanceof durch switch case? Java Basics - Anfänger-Themen 13
J Umgekehrte Iteration Java Basics - Anfänger-Themen 5
Q Iteration wie machen Java Basics - Anfänger-Themen 5
W iteration Java Basics - Anfänger-Themen 8
H Iteration und Editierung einer Liste Java Basics - Anfänger-Themen 6
B Collection während Iteration verändern Java Basics - Anfänger-Themen 7
T Iteration Java Basics - Anfänger-Themen 3
G iteration durch Array stoppt nicht bei Laufbedingung? Java Basics - Anfänger-Themen 13
C Lösung einer Aufgabe mittels Iteration und Rekursion Java Basics - Anfänger-Themen 12
W Aus Iteration mach Rekursion Java Basics - Anfänger-Themen 3
G Rekursion versus Iteration Java Basics - Anfänger-Themen 58
F Hat es noch einen Sinn, alte Versionen zu lernen Java Basics - Anfänger-Themen 45
Proxy Stack erweitern mit neuem Array falls der alte voll ist!? Java Basics - Anfänger-Themen 5
P Neue Java v8 JRE Version nicht über alte drüber installierbar: Wie sonst? Java Basics - Anfänger-Themen 7
J Kopierte Datei soll alte ersetzen. Java Basics - Anfänger-Themen 6
D Alte Klausuraufgabe Threads Java Basics - Anfänger-Themen 10
C Alte Klausuraufgabe - UML in Java implementieren Java Basics - Anfänger-Themen 1
G Konsole gibt "alte" sachen aus Java Basics - Anfänger-Themen 3
T Alte Einträge im Array werden von neuen überschrieben Java Basics - Anfänger-Themen 5
Fab1 alte Java Datei wird ausgeführt (trotz Änderung) Java Basics - Anfänger-Themen 4
M Problem mit getter, liefert nur alte Werte Java Basics - Anfänger-Themen 6
S JDK installieren alte Versionen deinstallieren Java Basics - Anfänger-Themen 2
R Neue GUI öffnen und die Alte schließen Java Basics - Anfänger-Themen 6
N Das alte Thema "File Encoding" Java Basics - Anfänger-Themen 2
S alte dateien löschen Java Basics - Anfänger-Themen 9
G Initialisierung + alte Werte Java Basics - Anfänger-Themen 7
Z DB-Abfrage liefert alte Werte Java Basics - Anfänger-Themen 11
G neue for Schleife in alte for Schleife umwandeln. Java Basics - Anfänger-Themen 2
S paintComponent, neue Instanz überschreibt wohl alte Instanz Java Basics - Anfänger-Themen 6
F Erste Schritte Zahlenreihe von Arraylist in 3erBlöcke sortiert in neue Arraylist Java Basics - Anfänger-Themen 2
B Verkettete Liste durchgehen und einzelne Elemente in neue Liste tun Java Basics - Anfänger-Themen 9
S JavaFX - Objekt an neue Stage übergeben Java Basics - Anfänger-Themen 12
C Nachträglich neue grafische Objekte hinzufügen Java Basics - Anfänger-Themen 7
A eine neue normale String-Array von einer String-Array, die in for schleife ist, schaffen Java Basics - Anfänger-Themen 3
B Neue Liste erstellen, wenn Objekte bestimmte Referenz hat / Gruppierung von Einträgen Java Basics - Anfänger-Themen 12
J Neue Werte in ein Array hinzugeben Java Basics - Anfänger-Themen 8
V Neue Ausgabe von toString nach Methodenaufruf Java Basics - Anfänger-Themen 9
B Objekt an neue Stage übergeben? Java Basics - Anfänger-Themen 9
L Neue Klasse für TableView? Java Basics - Anfänger-Themen 17
tsom Erste Schritte itext Text als Block auf neue Seite Java Basics - Anfänger-Themen 0
T Zufällige Matrix in neue Matrix schreiben Java Basics - Anfänger-Themen 6
M BufferedReader neue Zeile nach Knopfdruck Java Basics - Anfänger-Themen 9
S drawString() neue Zeile Java Basics - Anfänger-Themen 4
H Aus wav-datei lesen und in neue wav-datei speichern Java Basics - Anfänger-Themen 10
E Wenn i (for-Loop) bestimmter Wert, dann neue Zeile eines Buttons Java Basics - Anfänger-Themen 7
Hijo2006 Neue externe Klasse einbinden Java Basics - Anfänger-Themen 13
W Neue Klassenmethode implementieren.. Java Basics - Anfänger-Themen 6
U neue Methoden in JSP??? Java Basics - Anfänger-Themen 1
L0MiN Erste Schritte Neue Punkte zu einer Map hinzufügen und dauerhaft speichern? Java Basics - Anfänger-Themen 4
N wie schreibt man die neue for schleife? Java Basics - Anfänger-Themen 3
D Wie erstelle ich eine neue Hauptklasse mit eclipse? Java Basics - Anfänger-Themen 3
D neue public static class variablen in array speichern? Java Basics - Anfänger-Themen 6
B Neue Bibliothek hinzufügen Java Basics - Anfänger-Themen 2
S Daten aus anderen Dateien in neue Datei einlesen Java Basics - Anfänger-Themen 3
M FileWriter Neue Datei wenn aktuelle "zu groß" Java Basics - Anfänger-Themen 3
C auslesen bestimmter werte einer textdatei und anschl. hineinschreiben in eine neue txt-datei. Java Basics - Anfänger-Themen 2
R csv-Datei auslesen und ausgelesene Daten in neue csv-Datei speichern Java Basics - Anfänger-Themen 2
D Neue Array übernimmt Werte des alten nicht Java Basics - Anfänger-Themen 5
J Neue Zeile an bestimmter Stelle in Textdatei einfügen Java Basics - Anfänger-Themen 2
M Neue Objekte mit Hilfe von String Variable erschaffen Java Basics - Anfänger-Themen 2
I Neue Klassenbibliothek erstellen Java Basics - Anfänger-Themen 8
M Klassen Eine Klasse abrufen ohne eine neue Instanze auf zu rufen? Java Basics - Anfänger-Themen 8
C Vector erzeugt neue Indizes nach Input Java Basics - Anfänger-Themen 2
S neue Methode schreiben Java Basics - Anfänger-Themen 14
E Variable neue Random Zahl zuweisen, wenn Button geklickt Java Basics - Anfänger-Themen 5
J Werte ins neue Fenster übertragen Java Basics - Anfänger-Themen 6
G Ausgabe nach 5 Zeichen in neue Zeile schreiben??? Java Basics - Anfänger-Themen 12
A Werte per Zufall aus einer Datei ziehen und in eine neue Datei schreiben Java Basics - Anfänger-Themen 9
F Variablen Übergabe von eingelesenen Variablen in neue Klasse Java Basics - Anfänger-Themen 15
U neue Java-Datei öffnen Java Basics - Anfänger-Themen 10
S Itext und eine neue Zeile einfügen Java Basics - Anfänger-Themen 2
Corben Input/Output FileOutputStream - neue Zeile mit write(10) Java Basics - Anfänger-Themen 6
K in Konstruktor neue Objekte einer anderen Klasse erzeugen Java Basics - Anfänger-Themen 9
S Datenströne - Text in eine Datei einlesen, umwandeln und in eine neue Datei schreiben Java Basics - Anfänger-Themen 6
F Neue Klasse mag nicht - nullPointerException Java Basics - Anfänger-Themen 6
L String suchen und ersetzten, ohne neue Datei Java Basics - Anfänger-Themen 4
X FileHandler: neue Datei erzeugen Java Basics - Anfänger-Themen 2
U Java neue Variable für jeden Schleifendurchgang Java Basics - Anfänger-Themen 11
K Neue Menge aus zwei Mengen konstruieren Java Basics - Anfänger-Themen 3
Luk10 Dateipfad beim Laden einer Datei + Neue kleine Frage! Java Basics - Anfänger-Themen 11
Hindi93 Neue Libs - wohin damit? Java Basics - Anfänger-Themen 7
G JUnit ist das neue main() Java Basics - Anfänger-Themen 16
M neue Zufallszahl in Schleife Java Basics - Anfänger-Themen 2
M java neue datei erstellen Java Basics - Anfänger-Themen 6
V Scanner Einlese aus Datei in neue Datei? Java Basics - Anfänger-Themen 8
Haubitze_Broese neue Klasse? Java Basics - Anfänger-Themen 6
F Neue Panelgröße nach Fenster maximieren Java Basics - Anfänger-Themen 5
S FileWriter - in neue Zeile schreiben!? Java Basics - Anfänger-Themen 19
P OOP Automatisch neue Objekte erstellen Java Basics - Anfänger-Themen 14
L Neue Zeile JTable Java Basics - Anfänger-Themen 13
B Eine neue Klasse in anderen Projekten nutzen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben