Java ArrayList reemplazar en índice específico

213

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?

public void replaceBulb(int index, Bulbs theBulb) {

}
usuario949902
fuente
9
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 una vez en 5 minutos ...
2
Estaba usando el autocompletado de Eclipse, no miré a través de la interfaz.
GuiSim

Respuestas:

368

Consulte el set(int index, E element)método en la interfaz de Lista

TotoroTotoro
fuente
3
es correcto. 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, ¿verdad?
Android Killer
9
@AndroidKiller Es estático, ArrayList.set();pero cuando lo llamas en tu propia lista, no lo es:myArrayList.set(int, E);
desde el
El problema en este método es que arroja arrayOutOfBoundException en caso de que el arrayList no se haya inicializado. Me gustaría poner un elemento en el índice correcto en su adición, no estoy seguro de si hay una manera de hacerlo.
Bionix1441
@ Bionix1441 incluso si la lista se ha inicializado, aún es posible intentar establecer un valor para un índice que no existe. Por lo tanto, solo debe asegurarse de que su índice sea válido.
TotoroTotoro
126

Puede reemplazar los elementos en una posición específica utilizando el método set de ArrayList como se muestra 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.

Android Killer
fuente
1
@vaxquis ok señor, por favor escriba java 8 y suéltelo. Estamos aquí para usarlo. ;). En SO, la respuesta debe estar siempre de acuerdo con la pregunta, así que primero lea la pregunta. Y cuál es el problema si devuelve el valor anterior, si desea ese valor, puede usarlo para dejarlo. Está reemplazando el valor anterior y eso es todo.
Android Killer
1
@vaxquis has leído mi comentario antes. La respuesta mencionada claramente debe ser siempre de acuerdo a la pregunta. La persona que hizo la pregunta, ha mencionado que quiere reemplazar el elemento, lo que significa que tiene la lista de elementos con elementos. ahora claro señor ???
Android Killer
1
@vaxquis Lo que consideres, un novato lo sabrá, por lo que estos problemas no tienen ningún sentido. Todavía he editado para hacerte feliz :)
Android Killer
2
Ser un novato significa que alguien NO SABE cómo codificar algo correctamente. SIEMPRE es incorrecto proporcionar un código no válido y no hay excusa, ya que puede y generalmente traerá confusión a los principiantes. Ofrecer un ejemplo de código correcto y autónomo es de lo que trata StackOverflow. Gracias por la mejora en su respuesta.
25

Usa el set()método: ver doc

arraylist.set(index,newvalue);
Burt Beckwith
fuente
7
public void setItem(List<Item> dataEntity, Item item) {
    int itemIndex = dataEntity.indexOf(item);
    if (itemIndex != -1) {
        dataEntity.set(itemIndex, item);
    }
}
Khaled Lela
fuente
1
Esto solo funcionará si el nuevo elemento es igual al elemento anterior en términos del método equals (), ¿verdad?
spikemanuk
@spikemanuk, depende de la implementación del método 'equals ()' en 'Item'. Si la igualdad depende únicamente de la 'id' del 'Item', entonces este código puede usarse para reemplazar 'Item: {id = 1, name = London} por' Item: {id = 1, name = Paris}
Aniruddha Jagtap