Cómo insertar un objeto en una ArrayList en una posición específica

Supongamos que tengo una ArrayList de objetos de tamaño n. Ahora quiero insertar otro objeto en una posición específica, digamos en la posición de índice k (es mayor que 0 y menor que n) y quiero que otros objetos en y después de la posición de índice k cambien una posición de índice adelante. Entonces, ¿hay alguna forma de hacer esto directamente en Java? En realidad, quiero mantener la lista ordenada al agregar un nuevo objeto.

Para insertar valor en ArrayList en un índice particular, use:

public void add(int index, E element) 

Este método desplazará los elementos posteriores de la lista. pero no puede garantizar que la Lista siga siendo ordenada, ya que el nuevo Objeto que inserte puede situarse en la posición incorrecta de acuerdo con el orden de clasificación.


Para reemplazar el elemento en la posición especificada, use:

 public E set(int index, E element) 

Este método reemplaza el elemento en la posición especificada en la lista con el elemento especificado y devuelve el elemento previamente en la posición especificada.

Aquí está el ejemplo simple de arraylist para la inserción en el índice específico

 ArrayList str=new ArrayList(); 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] 

En realidad, la forma de hacerlo en su pregunta específica es arrayList.add(1,"INSERTED ELEMENT"); donde 1 es el puesto

Por ejemplo:

Quiero mover el elemento del 23º al 1º (índice == 0) en la lista de arreglos, así que coloco el 23º elemento en un valor temporal, y quitando de la lista, lo inserto en el 1º en la lista. Funcionó, pero no más eficiente.

  List 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); } } 

Tenga en cuenta que cuando inserta en una Lista en una posición, realmente está insertando en una posición dinámica dentro de los elementos actuales de la Lista. Mira aquí:

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 arrlist = new ArrayList(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 com / 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)