2013-01-05 155 views
1

我試圖通過List<String[]>之間的函數,但我得到了一個奇怪的結果。Android返回錯誤ArrayList值

功能!

public List<String[]> tes(){ 

    List<String[]> test = new ArrayList<String[]>(); 

    String[] temp = {"a","b","c"}; 
    test.add(temp); 

    temp[0] = "d"; 
    temp[1] = "e"; 
    temp[2] = "f"; 

    test.add(temp); 

    return test; 
} 

提取。

String output = ""; 
    List<String[]> Results = db.tes(); 
    for (String[] row: Results) { 
     output = output + row[0] + " " + row[1] + "\n"; 
    } 

結果:

d e 
d e 

我真的不明白這一點。它應該是a b d e,但事實並非如此。

回答

0

您有一個物體溫度。這意味着列表中的所有對象都有單獨的臨時鏈接。嘗試對每個字符串使用new,結果將會不同。

祝你好運!

0

是的,這是因爲,您已經將兩個相同的對象(temp)添加到列表測試中。

列表(測試)兩次保存同一對象的引用。

如果您在添加到列表後嘗試更改對象的值,它也會在列表中獲取更改,因爲列表中包含對象的引用。

+0

謝謝,那是我尋找的答案。它超出了我的想法,但我不確定。謝謝! – user1950770

+0

歡迎您,如果對您有所幫助,請投票支持 –