Java ArrayList sostituisce all'indice specifico


213

Ho bisogno di aiuto con questo Java per favore. Ho creato un ArrayList di lampadine e sto cercando di sostituire una lampadina in corrispondenza dell'indice specifico con un'altra lampadina. Quindi, con la seguente intestazione, come posso procedere?

public void replaceBulb(int index, Bulbs theBulb) {

}

9
Per quello che vale, stavo guardando l'interfaccia List per "sostituisci", "put" o "insert". Non pensavo di cercare un set.
GuiSim

2
@GuiSim l'interfaccia dell'elenco non è così lunga, puoi facilmente leggerla tutta in una volta in 5 minuti ...

2
Stavo usando il completamento automatico di Eclipse, non ho guardato attraverso l'interfaccia.
GuiSim,

Risposte:


368

Scopri il set(int index, E element)metodo nell'interfaccia Elenco


3
hai ragione, ma potresti pensare di modificarlo perché la tua risposta porta al fatto come il metodo set () è un metodo statico che non lo è, vero?
Android Killer

9
@AndroidKiller È statico, ArrayList.set();ma quando lo chiami sulla tua lista, non lo è:myArrayList.set(int, E);
whitfin

Il problema in questo metodo è che genera arrayOutOfBoundException nel caso in cui arrayList non sia stato inizializzato. Vorrei aggiungere un elemento all'indice giusto alla sua aggiunta, non sono sicuro che ci sia un modo per farlo.
Bionix1441

@ Bionix1441 anche se l'elenco è stato inizializzato, è ancora possibile provare a impostare un valore per un indice che non esiste. Quindi devi solo assicurarti che il tuo indice sia valido.
Totoro Totoro

126

È possibile sostituire gli elementi in una posizione specifica utilizzando il metodo set di ArrayList come di seguito:

list.set( your_index, your_item );

Ma l'elemento dovrebbe essere presente nell'indice che stai passando all'interno del metodo set () altrimenti genererà un'eccezione.


1
@vaxquis ok signore per favore scrivi java 8 e rilascialo. siamo qui per usarlo. ;). In SO, la risposta dovrebbe essere sempre in base alla domanda, quindi per favore leggi prima la domanda. E qual è il problema se restituisce il valore precedente, se si desidera quel valore, è possibile utilizzare altro lasciarlo. Sta sostituendo il vecchio valore e basta.
Android Killer

1
@vaxquis hai letto il mio commento prima. La risposta chiaramente menzionata dovrebbe essere sempre in base alla domanda. La persona che ha posto la domanda, ha menzionato che vuole sostituire l'elemento in modo da significare che ha l'arraylist con elementi al suo interno. ora cancella signore ???
Android Killer,

1
@vaxquis Le cose che consideri, un principiante lo saprà, quindi questi problemi non hanno alcun senso. Comunque ho modificato per renderti felice :)
Android Killer

2
Essere un principiante significa che qualcuno NON CONOSCE come codificare qualcosa correttamente. È SEMPRE sbagliato fornire codice non valido e non ci sono scuse per questo, perché può e di solito porterà confusione ai principianti. Fornire un esempio di codice corretto e autonomo è lo scopo di StackOverflow. Grazie per il miglioramento della tua risposta.



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

1
Funzionerà solo se il nuovo oggetto è uguale al vecchio in termini di metodo equals (), giusto?
spikemanuk,

@spikemanuk, dipende dall'implementazione del metodo 'equals ()' in 'Item'. Se l'uguaglianza dipende esclusivamente dall '"ID" dell' "Articolo", questo codice può essere usato per sostituire l '"Articolo: {id = 1, name = London} con" Item: {id = 1, name = Paris}
Aniruddha Jagtap
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.