Как вставить объект в ArrayList в определенной позиции


Предположим, у меня есть ArrayList объектов размером n. Теперь я хочу, чтобы вставить другой объект в определенном положении, скажем, в позиции с индексом К (больше 0 и меньше N) и я хочу, чтобы другие объекты во время и после установки индекса K для переключения на одну позицию опережает индекс. Так есть ли способ сделать это непосредственно в Java. На самом деле я хочу, чтобы отсортировать список при добавлении нового объекта.

5 69

5 ответов:

до вставить значение в ArrayList по определенному индексу, используйте:

public void add(int index, E element)

этот метод будет смещать последующие элементы списка. но вы не можете гарантировать, что список останется отсортированным, так как новый объект, который вы вставляете, может сидеть на неправильном месте в соответствии с порядком сортировки.


до заменить элемент в указанной позиции, использовать:

public E set(int index, E element)

этот метод заменяет элемент в указанной положение в список с указанным элементом, и возвращает элемент ранее на указанной позиции.

вот простой пример arraylist для вставки в определенный индекс

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]

на самом деле способ сделать это на ваш конкретный вопрос arrayList.add(1,"INSERTED ELEMENT"); где 1-позиция

обратите внимание, что когда вы вставляете в список в позиции, вы действительно вставляете в динамическое положение в пределах текущих элементов списка. Смотрите здесь:

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

например:

Я хочу переместить элемент из 23 - го в 1-й(index == 0) в arrayList, поэтому я помещаю 23-й элемент в значение temp и, удаляя из списка, вставляю его в 1-й в списке. Это сработало, но не более эффективно.

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