2012-07-25 22 views
1

我有兩個單獨的對象ArrayList<String>在兩個單獨的包Top和top10。我在我的活動中將Top10的值分配給Top。現在,如果我從Top中刪除一個元素,它也會從top10中刪除。我不知道爲什麼會發生這種情況?我感到完全傻眼了。有什麼我不知道的Java?或者它是Android?ArrayList <String>對象分配

這是我的活動的代碼:

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); 

第二打印語句具有比前一次少一種元素。

+1

Top是對servicecall中top10的引用,所以當你調用remove(0)時,它將刪除0處的元素,這就是爲什麼你看不到一個。 – kosa 2012-07-25 17:46:38

+0

你知道參考嗎? – Ivan 2012-07-25 17:46:50

+0

對!我做。我想我完全把它當作我心目中的一個變量。謝謝 – Harsh 2012-07-25 17:53:42

回答

1

您指向上到TOP10,而不是創建新的列表(您初始化現在的問題是有效的未使用的,因爲你。只是它repointing到其他列表)

你應該這樣做:

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

這將創建一個淺表副本。

+1

作品!謝謝。 – Harsh 2012-07-25 17:54:58

2

您指向相同的對象。

Top = ServiceCall.top10; 

並不創建新的對象,但作出參照的另一個,因此在兩個指針的所有變化將在同一對象被反射。

你必須創建一個新的傳遞另一個爲參數:

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