我发现这段代码的结果很难。看一看
我有ArrayList<Object> mylist = new ArrayList<Object>();
我知道这个mylist
在内存中有一个指向new ArrayList<Object>();
的指针,但如果我想重新排列此mylist
中的项目然后取出该项目该怎么办? ,代码看起来像这样
//supposing i have 0 to 9 items in my list,giving it a size of 10
Object o = mylist.get(2); // i retrieved the 3rd item
mylist.add(0,o); // i now place it as the first item
mylist.remove(2+1); // i want to now remove the old object. in real life the int
// is gotten somewhere else
o = mylist.get(0); // i am now retrieving the newly placed item
所以我的最后一个问题是我的o
对象是Object o = mylist.get(2);
的对象吗?如果不是,有人可以指导我如何重新安排我的物品并再次检索它吗?
我在想我应该克隆mylist
Arraylist
并且get()
是否合法?
答案 0 :(得分:0)
是的,在该代码的末尾,“o”的值仍为myList.get(2)
。 myList.get(2)
指的是堆中的某个对象,当您说myList.add(0, o)
时,您实际上只是在数组中将索引0处的另一个引用添加到myList.get()
指向的同一对象。然后你在索引2处删除了该引用,但索引0处的指针仍在那里。