1

我有一个ArrayList存储对象Foo

假设我想向 中添加 10 个对象FooArrayList我会执行以下操作:

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

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

我不能简单地做

arraylist.get(9);

了,因为这会抛出IndexOutOfBoundsException.

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

4

4 回答 4

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>()可能会更好。

于 2013-08-07T16:17:05.343 回答
0
arraylist.get(8 - numberOFDeletedElements);

8 而不是 9,因为索引从 0 开始,并且开头(删除之前)的第 9 个元素具有索引 8

或者

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

你可能根本不需要这个。因为所有的对象都是一样的。如果它们不同,那么您可能需要遍历数组并检查要查找元素的条件

于 2013-08-07T16:15:36.267 回答
0

equalTo()为您的Foo比使用contains()方法创建一个方法ArrayList

于 2013-08-07T16:16:23.977 回答
0

如果你只关心最后一个元素,你总是可以这样做

arraylist.get(arraylist.size() - 1)
于 2013-08-07T16:16:26.757 回答