1

関数間を渡そうとして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、そうではありません。

4

2 に答える 2

0

オブジェクトの一時が1つあります。これは、リスト内のすべてのオブジェクトがあなただけの臨時雇用者にリンクしていることを意味します。new文字列ごとに使用してみてください。結果は異なります。

幸運を!

于 2013-01-05T10:24:35.230 に答える
0

はい、それは、同じオブジェクト(temp)をリストテストに2回追加したためです。

同じオブジェクトの参照を2回保持するlist(test)。

リストに追加した後でもオブジェクトの値を変更しようとすると、リストはオブジェクトの参照を保持しているため、リストでも変更されます。

于 2013-01-05T10:37:31.943 に答える