[Java] Java5 For-schleife mit mehreren Listen

Skyo

Ensign
Registriert
Aug. 2006
Beiträge
162
Hey Community!

wir kennen alle die übliche for-schleife und die neue seit java 5:

Code:
for (String s : names) { //todo }

Meine Frage, kann man die neue For-Schleife dazu verwenden, über mehrere Listen/arrays etc zu iterieren? D.h. so etwas:

Code:
for (String s : vornamen; String s2 : nachnamen) {
    System.out.println(s1 + " " + s2)
}


Bis jetzt habe ich leider keine funktionierende Syntax gefunden. :(

Falls ja: wie verhält sich dieses Gebilde bei ungleich-langen Listen?
 
nein, geht nicht
könntest aber sowas bauen

it1 = liste1.iterator();
it2 = liste1.iterator();

while(it1.hasNext() && it2.hasNext())
{
String s1 = it1.next(); //hier muss noch ein cast auf String rein oder die liste muss string als generic definiert haben
String s2 = it2.next();
//todo
}

Hat natürlich den nachteil das beide Listen gleich lang sein müssen oder du baust ne prüfung ein dafür.
Im übrigen wäre eventuell interessant zu wissen was du damit vor hast. eventuell gibts ne besser lösung.


mfg
 
Wenn dann nur mit der "alten" Syntax:
PHP:
for(Iterator iter1=list1.iterator(),iter2=list2.iterator();iter1.hasNext()&&iter2.hasNext();)
{
String next1=iter1.next();
String next2=iter2.next();
...
}

Bei ungleich langen Listen müsstest halt die kürzere Liste gesondert innerhalb der Schleife abfangen o.ä. ;)

z.B.:
PHP:
for(Iterator iter1=list1.iterator(),iter2=list2.iterator();iter1.hasNext())
{
String next1=iter1.next();
String next2=iter2.hasNext()?iter2.next():"";
...
}
 
Ich würde eher die Datenstruktur überdenken als solche Schleifenkonstrukte zu verwenden. ;)
 
Ja, da bin ich mit Loopo einer Meinung. Wieso schreibst du die Daten nicht in eine Klasse. Dann machst du einen Array oder eine Liste von diese Klasse.

Code:
Class blub{
    String name;
    String vorname;
    public blub(String name, String vorname)
    {
        this.name=name;
        this.vorname=vorname;
    }

    public override Equals(Object other)
    {
        ...
    }
}

public static void main()
{
    //Holle die Daten...
    List<blub> meineListe = new List<blub>();
    foreach(blub item in meineListe)
    {
        ....
    }
}

So, das war jetzt ein C# Code... in Java sollte das genau so ablauf halt mit eigene Grammatik.

Wenn du vergleich zwischen einzelenen klassen anstellen willst, sollst du den Equals Teil ausprogrammieren, soweit dieser bei Java in der Form vorhanden ist.
 
Zurück
Oben