J. *_*aes 133 java android arraylist
我认为这是一个相当简单的问题,但我无法弄清楚如何正确地做到这一点.
我有一个空的arraylist:
ArrayList<object> list = new ArrayList<object>();
我有一些我想要添加的对象,每个对象都必须处于某个位置.然而,必须以各种可能的顺序添加它们.当我尝试这个,它不起作用,我得到一个IndexOutOfBoundsException:
list.add(1, object1)
list.add(3, object3)
list.add(2, object2)
我曾尝试是填充ArrayList用null,然后做以上.它有效,但我认为这是一个可怕的解决方案.还有另一种方法吗?
sup*_*erM 199
你可以这样做:
list.add(1, object1)
list.add(2, object3)
list.add(2, object2)
将object2添加到位置2后,它会将object3移动到位置3.
如果你希望object3始终位于position3,我建议你使用HashMap,其中position是key,object是value.
小智 28
您可以使用Array对象并将其转换为ArrayList-
Object[] array= new Object[10];
array[0]="1";
array[3]= "3";
array[2]="2";
array[7]="7";
List<Object> list= Arrays.asList(array);
ArrayList将是 - [1,null,2,3,null,null,null,7,null,null]
med*_*pal 15
如果是这种情况,那么为什么不考虑使用常规数组,初始化容量并将对象放在所需的索引处.
Object[] list = new Object[10];
list[0] = object1;
list[2] = object3;
list[1] = object2;
Eng*_*321 13
您还可以重写ArrayList以在您的大小和要添加的元素之间插入空值.
import java.util.ArrayList;
public class ArrayListAnySize<E> extends ArrayList<E>{
    @Override
    public void add(int index, E element){
        if(index >= 0 && index <= size()){
            super.add(index, element);
            return;
        }
        int insertNulls = index - size();
        for(int i = 0; i < insertNulls; i++){
            super.add(null);
        }
        super.add(element);
    }
}
然后,您可以在ArrayList中的任何位置添加.例如,这个主要方法:
public static void main(String[] args){
    ArrayListAnySize<String> a = new ArrayListAnySize<>();
    a.add("zero");
    a.add("one");
    a.add("two");
    a.add(5,"five");
    for(int i = 0; i < a.size(); i++){
        System.out.println(i+": "+a.get(i));
    }
}   
从控制台产生这个结果:
0:零
1:一
2:两个
3:null
4:null
5:五
我提请你注意ArrayList.add文档,它说     IndexOutOfBoundsException如果索引超出范围(index < 0 || index > size())
size()在打电话之前,请检查列表list.add(1, object1)
您需要使用空值填充空索引.
while (arraylist.size() < position)
{
     arraylist.add(null);
}
arraylist.add(position, object);
| 归档时间: | 
 | 
| 查看次数: | 331277 次 | 
| 最近记录: |