Java ArrayList an einem bestimmten Index ersetzen


212

Ich brauche bitte Hilfe bei diesem Java. Ich habe eine ArrayList mit Glühbirnen erstellt und versuche, eine Glühbirne mit einem bestimmten Index durch eine andere zu ersetzen. Wie gehe ich mit der folgenden Überschrift vor?

public void replaceBulb(int index, Bulbs theBulb) {

}

9
Für das, was es wert ist, habe ich in der List-Oberfläche nach "Ersetzen", "Setzen" oder "Einfügen" gesucht. Ich dachte nicht daran, nach einem Set zu suchen.
GuiSim

2
@GuiSim die List-Oberfläche ist nicht so lang, Sie können es leicht auf einmal in 5 Minuten lesen ...

2
Ich habe Eclipse's Autocomplete verwendet und nicht durch die Benutzeroberfläche geschaut.
GuiSim

Antworten:


367

Überprüfen Sie die set(int index, E element)Methode in der List-Oberfläche


3
Aber du denkst vielleicht, es zu bearbeiten, weil deine Antwort dazu führt, dass die set () -Methode eine statische Methode ist, die es nicht ist, oder?
Android Killer

9
@ AndroidKiller Es ist statisch wie, ArrayList.set();aber wenn Sie es auf Ihrer eigenen Liste aufrufen, ist es nicht:myArrayList.set(int, E);
Whitfin

Das Problem bei dieser Methode ist, dass sie arrayOutOfBoundException auslöst, falls die arrayList nicht initialisiert wurde. Ich möchte ein Element beim Hinzufügen an den richtigen Index setzen, nicht sicher, ob es einen Weg gibt, dies zu tun.
Bionix1441

@ Bionix1441 Auch wenn die Liste initialisiert wurde, ist es weiterhin möglich, einen Wert für einen nicht vorhandenen Index festzulegen. Sie müssen also nur sicherstellen, dass Ihr Index gültig ist.
TotoroTotoro

126

Sie können die Elemente an einer bestimmten Position mithilfe der folgenden Set-Methode von ArrayList ersetzen:

list.set( your_index, your_item );

Das Element sollte jedoch an dem Index vorhanden sein, den Sie innerhalb der set () -Methode übergeben, da sonst eine Ausnahme ausgelöst wird.


1
@ vaxquis ok Sir, bitte schreiben Sie Java 8 und geben Sie es frei. Wir sind hier, um es zu nutzen. ;). In SO sollte die Antwort immer der Frage entsprechen. Bitte lesen Sie zuerst die Frage. Und was ist das Problem, wenn es den vorherigen Wert zurückgibt, wenn Sie diesen Wert wollen, dann können Sie verwenden, sonst lassen Sie es. Es ersetzt den alten Wert und das ist es.
Android Killer

1
@ Vaxquis hast du meinen Kommentar schon einmal gelesen? Die klar erwähnte Antwort sollte immer der Frage entsprechen. Die Person, die die Frage gestellt hat, hat erwähnt, dass sie das Element ersetzen möchte, was bedeutet, dass sie die Arrayliste mit Elementen darin hat. jetzt klar Sir ???
Android Killer

1
@vaxquis Die Dinge, die Sie berücksichtigen, ein Neuling wird dies wissen, so dass diese Probleme keinen Sinn ergeben. Trotzdem habe ich bearbeitet, um dich glücklich zu machen :)
Android Killer

2
Ein Neuling zu sein bedeutet, dass jemand nicht weiß, wie man etwas richtig codiert. Es ist IMMER falsch, ungültigen Code anzugeben, und es gibt keine Entschuldigung dafür, da dies Anfängern Verwirrung stiften kann und wird. Bei StackOverflow geht es darum, ein korrektes und in sich geschlossenes Codebeispiel bereitzustellen. Vielen Dank für die Verbesserung Ihrer Antwort.



7
public void setItem(List<Item> dataEntity, Item item) {
    int itemIndex = dataEntity.indexOf(item);
    if (itemIndex != -1) {
        dataEntity.set(itemIndex, item);
    }
}

1
Dies funktioniert nur, wenn das neue Element in Bezug auf die Methode equals () dem alten Element entspricht, oder?
Spikemanuk

@spikemanuk, es hängt von der Implementierung der Methode 'equals ()' in 'Item' ab. Wenn die Gleichheit ausschließlich von der 'ID' des 'Artikels' abhängt, kann dieser Code verwendet werden, um 'Artikel: {ID = 1, Name = London} durch' Artikel: {ID = 1, Name = Paris}
Aniruddha Jagtap
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.