当ArrayList频繁更改时,访问特定的ArrayList元素

时间:2013-08-07 16:12:53

标签: java arraylist

我有ArrayList存储对象Foo

假设我想在Foo中添加10个对象ArrayList,我会做如下的事情:

for (int i = 0; i <10 ; i++){
    arraylist.add(new Foo());
}

虽然这个解决方案有效,但问题是,在第三个和第四个Foo被从arraylist中删除之后,如何访问第九个Foo?

我不能简单地做

arraylist.get(9);

,因为这会抛出IndexOutOfBoundsException

我希望能够使程序动态执行此操作,因为在我的情况下,Foos的数量不固定,并且可以随时删除它们。

4 个答案:

答案 0 :(得分:2)

您需要按特定顺序排列这些项目,并且您可能无法永远记住在哪个索引处插入了哪个foo,为此Map<Integer, Foo> is perfect.

Map<Integer,Foo> map = new HashMap<Integer, Foo>();
map.put(1, new Foo());
map.put(2, new Foo());
etc

根据评论,map = TreeMap<Integer, Foo>()可能会更好。

答案 1 :(得分:0)

arraylist.get(8 - numberOFDeletedElements);

8不是9,因为索引从0开头,第9个元素开头(删除前)有索引8

arraylist.get(arraylist.size() - 2);

你根本不需要这个。由于所有对象都是相同的。如果它们不同,那么您可能需要迭代数组并检查要查找元素的条件

答案 2 :(得分:0)

equalTo()创建Foo方法,而不是使用contains()的{​​{1}}方法。

答案 3 :(得分:0)

如果你只关心最后一个元素,你可以随时做

arraylist.get(arraylist.size() - 1)