Как вставить объект в ArrayList в определенной позиции - PullRequest
74 голосов
/ 16 августа 2011

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

Ответы [ 5 ]

139 голосов
/ 16 августа 2011

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

public void add(int index, E element)

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


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

public E set(int index, E element)

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

58 голосов
/ 03 января 2014

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

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]
2 голосов
/ 31 июля 2018

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

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)
1 голос
/ 31 мая 2013

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

0 голосов
/ 02 сентября 2016

Например:

Я хочу переместить элемент с 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);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...