Supposons que je possède une ArrayList d'objets de taille n. Maintenant, je veux insérer un autre objet à une position spécifique, disons à la position d'index k (est supérieur à 0 et inférieur à n) et je veux que d'autres objets situés à et après la position d'index k décalent d'une position d'index. Donc, est-il possible de le faire directement en Java? En fait, je veux que la liste soit triée lors de l'ajout d'un nouvel objet.
Pour insérer valeur dans ArrayList à un index particulier, utilisez:
public void add(int index, E element)
Cette méthode décale les éléments suivants de la liste. mais vous ne pouvez pas garantir que la liste restera triée, car le nouvel objet que vous insérez risque de ne pas être placé correctement, en fonction de l'ordre de tri.
Pour remplacer l'élément à la position spécifiée, utilisez:
public E set(int index, E element)
Cette méthode remplace l'élément à la position spécifiée dans la liste par l'élément spécifié et renvoie l'élément précédemment à la position spécifiée.
Voici l'exemple simple d'arraylist pour l'insertion à un index spécifique
ArrayList<Integer> str=new ArrayList<Integer>();
str.add(0);
str.add(1);
str.add(2);
str.add(3);
//Result = [0, 1, 2, 3]
str.add(1, 11);
str.add(2, 12);
//Result = [0, 11, 12, 1, 2, 3]
Notez que lorsque vous insérez dans une liste à une position, vous insérez réellement à un position dynamiquedans les éléments actuels de la liste. Vois ici:
package com.tutorialspoint;
import Java.util.ArrayList;
public class ArrayListDemo {
public static void main(String[] args) {
// create an empty array list with an initial capacity
ArrayList<Integer> arrlist = new ArrayList<Integer>(5);
// use add() method to add elements in the list
arrlist.add(15, 15);
arrlist.add(22, 22);
arrlist.add(30, 30);
arrlist.add(40, 40);
// adding element 25 at third position
arrlist.add(2, 25);
// let us print all the elements available in list
for (Integer number : arrlist) {
System.out.println("Number = " + number);
}
}
}
$ javac com/tutorialspoint/ArrayListDemo.Java
$ Java -Xmx128M -Xms16M avec/tutorialspoint/ArrayListDemo
Exception in thread "main" Java.lang.IndexOutOfBoundsException: Index: 15, Size: 0 at Java.util.ArrayList.rangeCheckForAdd(ArrayList.Java:661) at Java.util.ArrayList.add(ArrayList.Java:473) at com.tutorialspoint.ArrayListDemo.main(ArrayListDemo.Java:12)
En fait, le moyen de le faire pour votre question spécifique est arrayList.add(1,"INSERTED ELEMENT");
où 1 est la position
Par exemple:
Je veux déplacer l'élément du 23 au 1 (index == 0) dans la liste arrayList, donc je mets 23 élément à une valeur temporaire, et en le supprimant de la liste, l'insérez au 1 er de la liste. Cela a fonctionné, mais pas plus efficace.
List<ItemBean> list = JSON.parseArray(channelJsonStr,ItemBean.class);
for (int index = 0; index < list.size(); index++) {
if (list.get(index).getId() == 23) { // id 23
ItemBean bean = list.get(index);
list.remove(index);
list.add(0, bean);
}
}