android返回错误的ArrayList值

时间:2013-01-05 10:20:11

标签: android arraylist return-value

我正在尝试在函数之间传递List<String[]>,但我得到了一个奇怪的结果。

功能!

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,但事实并非如此。

2 个答案:

答案 0 :(得分:0)

你有一个对象临时。这意味着列表中的所有对象都有您单独的临时链接。尝试对每个字符串使用new,结果会有所不同。

祝你好运!

答案 1 :(得分:0)

是的,因为你已经在列表测试中添加了两次相同的对象(temp)。

列出(测试)两次持有相同对象的引用。

如果您在添加到列表后尝试更改对象的值,它也会在列表中进行更改,因为列表中包含对象的引用。