2011-08-16 19 views
62

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.Cómo insertar un objeto en una ArrayList en una posición específica

Respuesta

119

Para inserto valor en ArrayList en particular, índice, utilice:

public void add(int index, E element) 

Este método se 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, utilice:

public E set(int index, E element) 

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

+0

pero yo creo que va a reemplazar el objeto en esa posición índice –

+8

@Harsh no hay nada que pensar en realidad - los documentos son muy específicas en lo que hace este método http://download.oracle.com/javase /6/docs/api/java/util/ArrayList.html#add(int, E) –

+0

@Harsh para reemplazar puede usar set (int index, Object Obj) –

1

En realidad, la manera de hacerlo por su pregunta específica es arrayList.add(1,"INSERTED ELEMENT"); donde 1 es la posición

39

Aquí está el ejemplo sencillo ArrayList para su inserción en el índice específico

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] 
+1

Prefiero esta respuesta, ya que muestra los resultados de la (s) llamada (s). – aroth

0

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<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); 
     } 
    } 
Cuestiones relacionadas