[英]ArrayList<String> Object assignment
我在兩個單獨的包Top和top10中有兩個單獨的對象ArrayList<String>
。 我在活動中將top10的值指定為Top。 現在如果我從Top中刪除一個元素,它也會從top10中刪除。 我不知道為什么會這樣? 我覺得完全傻眼了。 有什么我不知道的關於Java的東西嗎? 還是android?
這是我的活動代碼:
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);
第二個打印出來的語句有一個元素少於前一個元素。
您指向同一個對象。
Top = ServiceCall.top10;
不創建新的Object,而是引用另一個,因此兩個指針中的所有更改都將反映在同一個Object中。
你必須創建一個新的傳遞另一個作為參數:
List<String> Top = new ArrayList<String>(ServiceCall.top10);
您將Top指向top10,而不是創建新列表(您的初始化程序現在實際上未被使用,因為您只是將其重新分配到其他列表。)
你應該做:
ArrayList<String> Top = new ArrayList<String>(ServiceCall.top10);
這將創建一個淺表副本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.