How to insert an object in an ArrayList at a specific position
假设我有一个大小为n的对象的ArrayList。 现在,我想在特定位置插入另一个对象,比方说在索引位置k(大于0且小于n),并且我希望索引位置k或之后的其他对象向前移动一个索引位置。 因此,有什么方法可以直接在Java中执行此操作。 实际上,我想在添加新对象时保持列表排序。
要将值插入特定索引处的ArrayList中,请使用:
1 | public void add(int index, E element) |
此方法将移动列表的后续元素。但是您不能保证列表将保持排序状态,因为您插入的新对象可能会根据排序顺序位于错误的位置。
要在指定位置替换元素,请使用:
1 | public E set(int index, E element) |
此方法替换元素中指定位置的元素
列出具有指定元素的元素,并先前返回该元素
在指定位置。
这是在特定索引处插入的简单arraylist示例
1 2 3 4 5 6 7 8 9 | 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] |
请注意,当您在某个位置插入列表时,实际上是在列表的当前元素内的动态位置插入。看这里:
http://tpcg.io/0KmArS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 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
实际上,针对特定问题的解决方法是
例如:
我想将arrayList中的元素从23th移到1th(index == 0),所以我将23th元素放入一个临时值,然后从列表中删除,将其插入列表中的1th。它是可行的,但效率不高。
1 2 3 4 5 6 7 8 | 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); } } |