Java ArrayList remplacer à un index spécifique

213

J'ai besoin d'aide avec ce java s'il vous plaît. J'ai créé une ArrayList d'ampoules et j'essaie de remplacer une ampoule à index spécifique par une autre ampoule. Donc, avec le titre suivant, comment dois-je procéder?

public void replaceBulb(int index, Bulbs theBulb) {

}
user949902
la source
9
Pour ce que ça vaut, je regardais l'interface de la liste pour "remplacer", "mettre" ou "insérer". Je n'ai pas pensé à chercher de set.
GuiSim
2
@GuiSim l'interface de la liste n'est pas si longue, vous pouvez facilement la lire en une seule fois en 5 minutes ...
2
J'utilisais la saisie semi-automatique d'Eclipse, je n'ai pas regardé l'interface.
GuiSim

Réponses:

368

Découvrez la set(int index, E element)méthode dans l' interface List

TotoroTotoro
la source
3
ur à droite.Mais vous pourriez penser à le modifier parce que votre réponse conduit au fait que la méthode set () est une méthode statique qui ne l'est pas, n'est-ce pas?
Android Killer
9
@AndroidKiller C'est statique, ArrayList.set();mais quand vous l'appelez sur votre propre liste, ce n'est pas:myArrayList.set(int, E);
whitfin
Le problème dans cette méthode est qu'elle lève arrayOutOfBoundException au cas où la arrayList n'a pas été initialisée. Je voudrais mettre un élément au bon index lors de son ajout, je ne sais pas s'il existe un moyen de le faire.
Bionix1441
@ Bionix1441 même si la liste a été initialisée, il est toujours possible d'essayer de définir une valeur pour un index qui n'existe pas. Il vous suffit donc de vous assurer que votre index est valide.
TotoroTotoro
126

Vous pouvez remplacer les éléments à une position spécifique en utilisant la méthode set de ArrayList comme ci-dessous:

list.set( your_index, your_item );

Mais l'élément doit être présent à l'index que vous passez dans la méthode set (), sinon il lèvera une exception.

Android Killer
la source
1
@vaxquis ok monsieur, veuillez écrire java 8 et le libérer. nous sommes là pour l'utiliser. ;). Dans SO, la réponse doit toujours être conforme à la question, veuillez donc d'abord lire la question. Et quel est le problème s'il renvoie la valeur précédente, si vous voulez cette valeur, vous pouvez utiliser sinon la laisser. Il remplace l'ancienne valeur et c'est tout.
Android Killer
1
@vaxquis vous a lu mon commentaire avant. La réponse clairement mentionnée doit toujours être conforme à la question. La personne qui a posé la question, il a mentionné qu'il voulait remplacer l'élément afin que cela signifie qu'il a l'arrayliste avec des éléments en elle. maintenant clair monsieur ???
Android Killer
1
@vaxquis Les choses que vous considérez, un débutant le saura, donc ces questions n'ont aucun sens. J'ai quand même édité pour vous rendre heureux :)
Android Killer
2
Être un débutant signifie que quelqu'un NE SAIT PAS comment coder quelque chose correctement. Il est TOUJOURS erroné de fournir un code invalide et il n'y a aucune excuse, car cela peut et apportera généralement de la confusion aux débutants. Fournir un exemple de code correct et autonome est la raison d'être de StackOverflow. Merci pour l'amélioration de votre réponse.
25

Utilisez la set()méthode: voir doc

arraylist.set(index,newvalue);
Burt Beckwith
la source
7
public void setItem(List<Item> dataEntity, Item item) {
    int itemIndex = dataEntity.indexOf(item);
    if (itemIndex != -1) {
        dataEntity.set(itemIndex, item);
    }
}
Khaled Lela
la source
1
Cela ne fonctionnera que si le nouvel élément est égal à l'ancien en termes de la méthode equals (), non?
spikemanuk
@spikemanuk, cela dépend de l'implémentation de la méthode 'equals ()' dans 'Item'. Si l'égalité dépend uniquement de 'id' de 'Item' alors ce code peut être utilisé pour remplacer 'Item: {id = 1, name = London} par' Item: {id = 1, name = Paris}
Aniruddha Jagtap