我有ArrayList
存储对象Foo
。
假设我想在Foo
中添加10个对象ArrayList
,我会做如下的事情:
for (int i = 0; i <10 ; i++){
arraylist.add(new Foo());
}
虽然这个解决方案有效,但问题是,在第三个和第四个Foo被从arraylist中删除之后,如何访问第九个Foo?
我不能简单地做
arraylist.get(9);
,因为这会抛出IndexOutOfBoundsException
。
我希望能够使程序动态执行此操作,因为在我的情况下,Foos的数量不固定,并且可以随时删除它们。
答案 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)