如何在特定位置的ArrayList中插入对象

时间:2011-08-16 06:34:51

标签: java arraylist

假设我有一个大小为n的对象的ArrayList。现在我想在特定位置插入另一个对象,假设在索引位置k(大于0且小于n)并且我希望在索引位置k处和之后的其他对象向前移动一个索引位置。那么有没有办法直接在Java中这样做。实际上我想在添加新对象时保持列表排序。

7 个答案:

答案 0 :(得分:137)

要在特定索引处将插入值导入ArrayList,请使用:

public void add(int index, E element)

此方法将移动列表的后续元素。但是你无法保证List会保持排序状态,因为你插入的新对象可能会根据排序顺序位于错误的位置。


替换指定位置的元素,请使用:

public E set(int index, E element)

此方法替换了指定位置的元素 列出具有指定元素的列表,并返回先前的元素 在指定的位置。

答案 1 :(得分:57)

以下是在特定索引处插入的简单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]

答案 2 :(得分:2)

请注意,当您在某个位置插入列表时,实际上是在列表的当前元素内的 动态位置 中插入。看到这里:

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)

答案 3 :(得分:1)

实际上,在您的具体问题上执行此操作的方法是arrayList.add(1,"INSERTED ELEMENT");,其中1是职位

答案 4 :(得分:0)

例如:

我想在arrayList中将元素从第23位移动到第1位(索引== 0),因此我将第23个元素放入临时值,并从列表中删除,将其插入列表中的第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);
        }
    }

答案 5 :(得分:0)

添加到某个位置时,您必须自己处理ArrayIndexOutOfBounds。

为方便起见,您可以在Kotlin中使用此扩展功能

/**
 * Adds an [element] to index [index] or to the end of the List in case [index] is out of bounds
 */
fun <T> MutableList<T>.insert(index: Int, element: T) {
    if (index <= size) {
        add(index, element)
    } else {
        add(element)
    }
}

答案 6 :(得分:-1)

此方法将指定的元素追加到此列表的末尾。

add(E e) //append element to the end of the arraylist.

此方法将指定的元素插入此列表中的指定位置。

void add(int index, E element) //inserts element at the given position in the array list.

此方法用指定的元素替换此列表中指定位置的元素。

set(int index, E element) //Replaces the element at the specified position in this list with the specified element.