Java: Auf das i-te Element einer Liste zugreifen

misterbecks

misterbecks

Aktives Mitglied
Thread Starter
Dabei seit
06.11.2004
Beiträge
2.336
Reaktionspunkte
24
Ich habe ein kleines Java Problem. Wie greife ich auf das i-te Element einer Liste zu? Mir ist klar, dass ich durch Iteration zu den einzelnen Elementen der Liste gelange, aber wie stoppe ich die Iteraion an dem i-ten Element und greife auf den Wert zu?
 
Hi, was meinst Du mit Liste??? Wenn die Liste ein String ist, kannst du mit der Hilfsklasse SringTokenizer arbeiten. Der String wird in Tokens(Teilstrings) zerlegt. Als Treenzeichen wird defaultmässig das Zeichen \n, \r, \t, und blank verwendet. Beispiel:
public StringTokenizer(String blah); Hier wird der Sting "blah" ünergeben. Wenn Du weitere (eigene Trennzeichen benötigst, kannst Du einen zweiten String übergeben, der als Inhalt die nötigen trennzeichen hat: public StringTokenizer(String blah, String mäh);
 
ist das jetzt eher eine programmier-technische frage?
das stoppen machst du mit der schleifen-abbruch-bedingung...

in java bieten allerdings die meisten datentypen auch einen direkten index zugriff.
listen verwendet man da ja kaum, weil die meisten array-ähnlichen datentypen dynamische größen haben...
 
Dieter Maak schrieb:
Hi, was meinst Du mit Liste??? Wenn die Liste ein String ist, kannst du mit der Hilfsklasse SringTokenizer arbeiten. Der String wird in Tokens(Teilstrings) zerlegt. Als Treenzeichen wird defaultmässig das Zeichen \n, \r, \t, und blank verwendet. Beispiel:
public StringTokenizer(String blah); Hier wird der Sting "blah" ünergeben. Wenn Du weitere (eigene Trennzeichen benötigst, kannst Du einen zweiten String übergeben, der als Inhalt die nötigen trennzeichen hat: public StringTokenizer(String blah, String mäh);

Nein, kein String, da wäre der Zugriff auf ein Element simpel. Ich meine eine (einfach verkette) Liste.
 
oneOeight schrieb:
ist das jetzt eher eine programmier-technische frage?
das stoppen machst du mit der schleifen-abbruch-bedingung...
Ja.

Code:
public int size() {
        int result = 0;
        ListIterator iter = iterator();
        while(iter.hasNext()) {
            result++;
            iter.next();
        }
        return result;
    }

Ist z.B. die Methode für die Größe der Liste. Nun ist unklar, wo und wie ich die Bedingung für den Halt am i-ten Element einfüge.....
 
result wert abfragen und mit einem break aus der schleife raus...
allerdings solltest du natürlich result vor dem post-inkrement checken ;)

vielleicht bietet sich hier eher das do-while-statement an...
 
Code:
public Element getElement(int index) {
        ListIterator iter = iterator();
        while(index>0) {
            iter.next();
            index--;
        }
        return iter.getElement();
}

Hab halt keine Ahnung, was ihr da zurückgeben sollt und wie die Funktionen eurer Liste sind, aber die Grundidee sollte rüberkommen, oder?
 
rash65 schrieb:
Code:
public Element getElement(int index) {
        ListIterator iter = iterator();
        while(index>0) {
            iter.next();
            index--;
        }
        return iter.getElement();
}

Hab halt keine Ahnung, was ihr da zurückgeben sollt und wie die Funktionen eurer Liste sind, aber die Grundidee sollte rüberkommen, oder?
Ja, die Idee ist klar. Werde damit mal weiterarbeiten, danke.
 
rash65 schrieb:

ich schätze mal, dass die programmier-aufgabe den umgang mit verketteten listen nahe bringen soll, und da wird man die methoden von vorgefertigten listen klassen nicht benutzen dürfen ;)
 
oneOeight schrieb:
ich schätze mal, dass die programmier-aufgabe den umgang mit verketteten listen nahe bringen soll, und da wird man die methoden von vorgefertigten listen klassen nicht benutzen dürfen ;)

dann solltest du aber besser auch keine Iterator verwenden.. ;)
 
lun_IX schrieb:
dann solltest du aber besser auch keine Iterator verwenden.. ;)

zeiger unter java sollten schwierig sein ;)
 
oneOeight schrieb:
ich schätze mal, dass die programmier-aufgabe den umgang mit verketteten listen nahe bringen soll, und da wird man die methoden von vorgefertigten listen klassen nicht benutzen dürfen ;)

Davon mal ganz abgesehen, gibts list.get(index) unter Java gar nicht, da gibts nur Vector.getElementAt(index).
 
rash65 schrieb:
Davon mal ganz abgesehen, gibts list.get(index) unter Java gar nicht, da gibts nur Vector.getElementAt(index).

doch, es gibt get als methode bei der ArrayList...
 
oneOeight schrieb:
ich schätze mal, dass die programmier-aufgabe den umgang mit verketteten listen nahe bringen soll, und da wird man die methoden von vorgefertigten listen klassen nicht benutzen dürfen ;)
Genau diese Methode in der class Liste wollte ich programmieren.....hat auch geklappt.
 
Zurück
Oben Unten