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

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

Ответ 1

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

public void add(int index, E element)

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


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

public E set(int index, E element)

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

Ответ 2

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

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]

Ответ 3

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

Ответ 4

Например:

Я хочу переместить элемент с 23-го на 1-й (индекс == 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);
        }
    }