web-dev-qa-db-fra.com

Comment insérer un objet dans une ArrayList à une position spécifique

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.

74
Harshveer Singh

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.

139
CloudyMarble

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]
60
Jaldip Katre

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:

http://tpcg.io/0KmArS

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)
2
Andrew

En fait, le moyen de le faire pour votre question spécifique est arrayList.add(1,"INSERTED ELEMENT"); où 1 est la position

1
Sergio López

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);
        }
    }
0
Armysir