2011-09-17 31 views
147

Necesito ayuda con este java por favor. Creé una ArrayList de bombillas, y estoy tratando de reemplazar una bombilla en un índice específico con otra bombilla. Entonces con el siguiente encabezado, ¿cómo procedo?Java ArrayList reemplazar en el índice específico

public void replaceBulb(int index, Bulbs theBulb) { 

} 
+7

Por lo que vale, estaba mirando la interfaz de la Lista para "reemplazar", "poner" o "insertar". No pensé en buscar el set. – GuiSim

+2

@GuiSim La interfaz de la lista no es tan larga, puede leerla fácilmente de manera completa en 5 minutos ... – vaxquis

+1

Estaba usando el autocompletado de Eclipse, no miré a través de la interfaz. – GuiSim

Respuesta

257

Comprobar a cabo el método set(int index, E element) en el List interface

+3

u derecha. Pero puede pensar en editarlo porque su respuesta lleva al hecho de que el método set() es un método estático que no lo es, ¿o sí? –

+9

@AndroidKiller Está estático como 'ArrayList.set();' pero cuando lo llama en su propia lista, no es: 'myArrayList.set (int, E);' – whitfin

+0

El problema en este método es que arroja arrayOutOfBoundException en caso el arrayList no se ha inicializado. Me gustaría poner un elemento en el índice correcto en su adición, no estoy seguro si hay una manera de hacerlo. – Bionix1441

20

Uso del set() método: see doc

arraylist.set(index,newvalue); 
106

Puede sustituir los elementos en la posición específica utilizando el método de conjunto de ArrayList como a continuación:

list.set(your_index, your_item); 

Pero el elemento debe estar presente en el índice que está pasando dentro del método set(), de lo contrario arrojará una excepción.

+1

@vaxquis ok señor, por favor escriba java 8 y libérelo. estamos aquí para usarlo. ;). En SO, la respuesta debe ser siempre de acuerdo a la pregunta, así que por favor lea la pregunta primero. Y cuál es el problema si devuelve el valor anterior, si quieres ese valor entonces puedes usar else dejalo. Está reemplazando el valor anterior y eso es todo. –

+1

@vaxquis leyó mi comentario antes. La respuesta claramente mencionada debe ser siempre según la pregunta. La persona que hizo la pregunta, mencionó que quiere reemplazar el elemento, lo que significa que tiene la lista de arrays con elementos en ella. ahora claro Señor ??? –

+1

@vaxquis Las cosas que usted considera, un novato sabrá esto, por lo que estos problemas no tienen ningún sentido. Todavía he editado para hacerte feliz :) –

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

Esto solo funcionará si el nuevo artículo es igual al artículo anterior en términos del método equals(), ¿verdad? – spikemanuk

Cuestiones relacionadas