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) {

}

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


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.


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.



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

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.