opvragen object uit arraylist

Status
Niet open voor verdere reacties.

DcMatic

Gebruiker
Lid geworden
10 okt 2013
Berichten
15
Hallo,

ik heb een arraylist van brieven, en afhankelijk van de naam van de ontvanger wil ik de juiste brief opvragen.
Daarvoor doe ik het volgende,

public static ABrief leesBrief() {
ABrief brief = null;
Scanner scan = new Scanner(System.in);

System.out.println("Wat is je naam?");
String naamOntvanger = scan.next();

Iterator<ABrief> iterator = brievenLijst.iterator();
while (iterator.hasNext()) {
String ontvanger = iterator.next().getOntvanger().getNaam();
if (naamOntvanger.equals(ontvanger)) {
brief = iterator.next();
}
}

return brief;
}

Het probleem is dat ik hier steeds niet het gewenste object maar het volgende object van de lijst krijg.
Kan iemand me uitleggen wat ik hier verkeerd doe?

Dank bij voorbaat!!

saludos
 
Ik ken geen Java maar als ik het zo lees dan lijkt het me dat je met brief = iterator.next(); de brief ophaalt die volgt op de brief die je wilt hebben en het iterator object heeft volgens mij geen reference naar het huidige record.

Probeer het dus eens zo:

Code:
public static ABrief leesBrief() {
    ABrief brief = null;
    Scanner scan = new Scanner(System.in);

    System.out.println("Wat is je naam?");
    String naamOntvanger = scan.next();

    Iterator<ABrief> iterator = brievenLijst.iterator();
    while (iterator.hasNext()) {
        String ontvanger = iterator.next().getOntvanger().getNaam();
        if (naamOntvanger.equals(ontvanger)) {
            brief = iterator.previous();
            brief = iterator.next();
        }
    }

    return brief;
}

Maar er zijn hier vast mensen die echt weten hoe het zit.
 
Laatst bewerkt:
Persoonlijk gebruik ik bij ArrayLists altijd een for-lus, maar dat zal meer een kwestie van voorkeur zijn. Met een iterator kan het ook zonder gebruik te maken van previous en next:

Code:
public static ABrief leesBrief() {
    ABrief brief = null;
    Scanner scan = new Scanner(System.in);

    System.out.println("Wat is je naam?");
    String naamOntvanger = scan.next();

    Iterator<ABrief> iterator = brievenLijst.iterator();
    while (iterator.hasNext()) {
        ABrief huidigeBrief = iterator.next();
        String ontvanger = huidigeBrief.getOntvanger().getNaam();
        if (naamOntvanger.equals(ontvanger)) {
            brief = huidigeBrief;
        }
    }

    return brief;
}
 
bedankt supersnail!!

en aan iedereen een prettig eindejaar en een goed begin gewenst!!:d
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan