Frage von Epicmetalfan, 32

java ArrayLists Elemente löschen?

hi, folgendes problem: ich soll als Übung ein simples Programm schreiben, was eine Bank simuliert, die konten verwaltet. es gibt die klasse "Konto", die unter anderem den interger "knr" enthält.

dann gibt es die klasse "Bank", in der in einer ArrayList "konten" alle Konten gespeichert sind. daraus möchte ich jetzt ein bestimmtes konto an Hand seiner Kontonummer löschen.

void löschen(int nummer){
    konten.remove(Konto k)(k.knr = nummer);
}

mein Code ist offensichtlich falsch, was muss ich da genau machen?

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von KnusperPudding, Community-Experte für Java, 24

Ja. Bist dicht dran... du hast nur ein = verwendet, wodurch du eine Wertzuweisung hast. Für Lambda fehlt dir noch der Pfeil und eine Klammer, sowie die korrekte Methode removeIf:

konten.removeIf((Konto k) -> k.ktoNr == nummer);
Kommentar von Epicmetalfan ,

ups, ja das mit dem = war reine blödheit ^^

gut danke, das removeIf wurde mir gar nicht vorgeschlagen

Kommentar von KnusperPudding ,

Kein Problem.

remove nimmt ein Objekt entgegen, bzw. durch Generics den Element-Typen von dem die Liste ist.

removeIf nimmt hingegen ein Predicate entgegen. - Ein Interface über das einfache Operationen abgewickelt werden können, wie die Ermittlung des korrekten Kontos anhand der Kontonummer. In "komplexer Schreibweise" würde das so aussehen.

konten.removeIf(new Predicate() {

@Override
public boolean test(Konto k) {
return k.ktoNr == nummer;
}
});

Lambda verkürzt dir das ganze zum Einzeiler.

Kommentar von KnusperPudding ,

Danke für den Stern

Antwort
von gurkenpower5000, 23

Definiere das k

Kommentar von Epicmetalfan ,

keine ahnung, ich hab mir den vorschlag von eclipse angeguckt und dachte ich muss da ein objekt angeben.

als Satz formuliert will ich folgendes:

entferne das Konto aus der Liste "konten", bei dem die knr=nummer ist

Keine passende Antwort gefunden?

Fragen Sie die Community