我正在尝试在函数之间传递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
,但事实并非如此。
答案 0 :(得分:0)
你有一个对象临时。这意味着列表中的所有对象都有您单独的临时链接。尝试对每个字符串使用new
,结果会有所不同。
答案 1 :(得分:0)
是的,因为你已经在列表测试中添加了两次相同的对象(temp)。
列出(测试)两次持有相同对象的引用。
如果您在添加到列表后尝试更改对象的值,它也会在列表中进行更改,因为列表中包含对象的引用。