Как вставить объект в ArrayList в определенной позиции
Предположим, у меня есть ArrayList объектов размером n. Теперь я хочу, чтобы вставить другой объект в определенном положении, скажем, в позиции с индексом К (больше 0 и меньше N) и я хочу, чтобы другие объекты во время и после установки индекса K для переключения на одну позицию опережает индекс. Так есть ли способ сделать это непосредственно в Java. На самом деле я хочу, чтобы отсортировать список при добавлении нового объекта.
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-позиция
обратите внимание, что когда вы вставляете в список в позиции, вы действительно вставляете в динамическое положение в пределах текущих элементов списка. Смотрите здесь:
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); } }