Java ArrayList substituir no índice específico

212

Preciso de ajuda com este java, por favor. Criei um ArrayList de lâmpadas e estou tentando substituir uma lâmpada no índice específico por outra. Portanto, com o seguinte título, como devo proceder?

public void replaceBulb(int index, Bulbs theBulb) {

}
user949902
fonte
9
Para o que vale a pena, eu estava olhando para a interface da lista "substituir", "colocar" ou "inserir". Não pensei em procurar um set.
GuiSim
2
@GuiSim a interface List não é tão longo, você pode facilmente lê-lo inteiro de uma vez em 5 minutos ...
2
Eu estava usando o preenchimento automático do Eclipse, não olhou pela interface.
22414 GuiSim #

Respostas:

367

Confira o set(int index, E element)método na interface da lista

TotoroTotoro
fonte
3
mas você pode editá-lo porque sua resposta leva ao fato de que o método set () é um método estático que não é, não é?
Android Killer
9
De @AndroidKiller Ele estática como ArrayList.set();, mas quando você chamá-lo em sua própria lista, não é:myArrayList.set(int, E);
whitfin
O problema nesse método é que ele lança arrayOutOfBoundException no caso de o arrayList não ter sido inicializado. Eu gostaria de colocar um elemento no índice certo em sua adição, não tenho certeza se existe uma maneira de fazer isso.
Bionix1441
@ Bionix1441 mesmo que a lista tenha sido inicializada, ainda é possível tentar definir um valor para um índice que não existe. Então, você só precisa garantir que seu índice seja válido.
TotoroTotoro
126

Você pode substituir os itens em uma posição específica usando o método set de ArrayList como abaixo:

list.set( your_index, your_item );

Mas o elemento deve estar presente no índice que você está passando dentro do método set (), caso contrário ele lançará uma exceção.

Android Killer
fonte
1
@vaxquis ok senhor, por favor escreva java 8 e libere-o. estamos aqui para usá-lo. ;). No SO, a resposta deve estar sempre de acordo com a pergunta; portanto, leia a pergunta primeiro. E qual é o problema se ele retornar o valor anterior, se você desejar esse valor, poderá usar outra opção, deixe-o. Ele está substituindo o valor antigo e é isso.
Android Killer
1
@vaxquis você leu meu comentário antes. A resposta claramente mencionada deve estar sempre de acordo com a pergunta. A pessoa que fez a pergunta, ele mencionou que deseja substituir o elemento, o que significa que ele possui o arraylist com elementos nele. agora limpe senhor ???
Android Killer
1
@ vaxquis As coisas que você considera, um novato saberá disso, então essas questões não fazem nenhum sentido. Ainda i ter editado para fazer u :) feliz
assassino Android
2
Ser um novato significa que alguém NÃO SABE como codificar algo corretamente. É sempre errado fornecer código inválido e não há desculpa para isso, porque ele pode e geralmente trará confusão para iniciantes. Fornecer um exemplo de código correto e independente é o objetivo do StackOverflow. Obrigado pela melhoria na sua resposta.
25

Use o set()método: consulte doc

arraylist.set(index,newvalue);
Burt Beckwith
fonte
7
public void setItem(List<Item> dataEntity, Item item) {
    int itemIndex = dataEntity.indexOf(item);
    if (itemIndex != -1) {
        dataEntity.set(itemIndex, item);
    }
}
Khaled Lela
fonte
1
Isso só funcionará se o novo item for igual ao item antigo em termos do método equals (), certo?
Spikemanuk
@spikemanuk, depende da implementação do método 'equals ()' em 'Item'. Se a igualdade depender unicamente do 'id' do 'Item', esse código poderá ser usado para substituir 'Item: {id = 1, nome = Londres} por' Item: {id = 1, nome = Paris}
Aniruddha Jagtap