1

ArrayList<String>在两个单独的包 Top 和 top10 中有两个单独的对象。我在我的活动中将 top10 的值分配给 Top。现在,如果我从 Top 中删除一个元素,它也会从 top10 中删除。我不知道为什么会这样?我觉得完全傻眼了。java有什么我不知道的吗?还是安卓?

这是我的活动代码:

ArrayList<String> Top = new ArrayList<String>();          

// ServiceCall is the name of the class where top10 is initialized.

Top = ServiceCall.top10;

System.out.println("top WR: "+ServiceCall.top10);

if(Top.get(0).equals("Please Select")) Top.remove(0);   

System.out.println("top WR: "+ServiceCall.top10);

第二个打印出来的语句比前一个少一个元素。

4

2 回答 2

2

您指向的是同一个对象。

Top = ServiceCall.top10;

不是创建一个新对象,而是引用另一个对象,因此两个指针的所有更改都将反映在同一个对象中。

您必须创建一个新的,将另一个作为参数传递:

List<String> Top = new ArrayList<String>(ServiceCall.top10);
于 2012-07-25T17:46:59.757 回答
1

您将 Top 指向 top10,而不是创建新列表(您的初始化程序现在实际上未使用,因为您只是将其重新指向另一个列表。)

你应该做:

ArrayList<String> Top = new ArrayList<String>(ServiceCall.top10);    

这将创建一个浅拷贝。

于 2012-07-25T17:47:37.407 回答