对ArrayList上的内存的对象引用

时间:2015-03-02 01:15:18

标签: java arraylist

我发现这段代码的结果很难。看一看 我有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()是否合法?

1 个答案:

答案 0 :(得分:0)

是的,在该代码的末尾,“o”的值仍为myList.get(2)myList.get(2)指的是堆中的某个对象,当您说myList.add(0, o)时,您实际上只是在数组中将索引0处的另一个引用添加到myList.get()指向的同一对象。然后你在索引2处删除了该引用,但索引0处的指针仍在那里。