2011-09-17 22 views
147

Ho bisogno di aiuto con questo java per favore. Ho creato un ArrayList di lampadine e sto provando a sostituire una lampadina a un indice specifico con un'altra lampadina. Quindi, con la seguente intestazione, come procedo?Java ArrayList sostituire a indice specifico

public void replaceBulb(int index, Bulbs theBulb) { 

} 
+7

Per quello che vale, stavo guardando l'interfaccia Elenco per "Sostituisci", "Inserisci" o "Inserisci". Non ho pensato di cercare set. – GuiSim

+2

@GuiSim l'interfaccia Elenco non è così lunga, puoi facilmente leggerla tutta in una volta in 5 minuti ... – vaxquis

+1

Stavo usando il completamento automatico di Eclipse, non guardavo attraverso l'interfaccia. – GuiSim

risposta

257

Partenza il metodo set(int index, E element) nel List interface

+3

u r right.But potresti pensare di modificarlo perché la tua risposta porta al fatto che il metodo set() è un metodo statico che non lo è, vero? –

+9

@AndroidKiller È statico come 'ArrayList.set();' ma quando lo chiami sul tuo elenco, non lo è: 'myArrayList.set (int, E);' – whitfin

+0

Il problema in questo metodo è che genera arrayOutOfBoundException in caso l'arrayList non è stato inizializzato. Vorrei aggiungere un elemento all'indice giusto al suo completamento, non sono sicuro se c'è un modo per farlo. – Bionix1441

20

Utilizzare il metodo set(): see doc

arraylist.set(index,newvalue); 
106

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

Ma l'elemento dovrebbe essere presente all'indice che si sta 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 vuoi quel valore allora puoi usare else lascialo. Sta sostituendo il vecchio valore e basta. –

+1

@vaxquis hai letto il mio commento prima. La risposta chiaramente citata dovrebbe essere sempre in base alla domanda. La persona che ha posto la domanda, ha accennato che vuole sostituire l'elemento in modo che abbia l'arraylist con elementi in esso. ora chiaro Sir ??? –

+1

@vaxquis Le cose che consideri, un principiante lo sapranno, quindi questi problemi non hanno alcun senso. Ancora ho modificato per renderti felice :) –

6
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 elemento è uguale al vecchio in termini del metodo equals(), giusto? – spikemanuk