-1

メソッドの場合add()、文字列配列を文字列配列のリストに追加するにはどうすればよいですか? 例えば:

List<String[]> myList = new ArrayList<String[]>();
String[] myString = {"foo", "bar"};
myList.add(new String[](myString)); //does not work

編集: はい、試してみmyList.add(myString)ましたが、 myString の値が参照渡しされないようにしたいだけです。

4

4 に答える 4

5

更新された回答

これを受けて

編集: はい、私は myList.add(myString) を試しましたが、 myString の値のみを参照渡ししないでください。

String[] newArr = new String[myString.length];
for (int i = 0; i < myString.length; i ++) {
    newArr[i] = myString[i];
}
myList.add(newArr);

この

更新された回答をありがとう。それが唯一の解決策ですか?Java にはより短い解決策がなく、それを行うためだけに別の変数を作成しなければならないのは少し奇妙に感じます。– めいりょう

String[] newArr = new String[myString.length];
System.arraycopy(myString, 0, newArr, 0, myString.length);


(古い回答)

myList.add(new String[](myString)); //does not work    
myList.add(myString); //works

なぜあなたは使用していnew String[]ますか?

注: 配列を動的に生成する場合は、次のようにします。

myList.add(new String[] {"string1", "string2", "foo", "bar"});

したがって、例は次のように短縮できます。

List<String[]> myList = new ArrayList<String[]>();
myList.add(new String[] {"foo", "bar"});
于 2013-01-03T14:27:34.100 に答える
2

この回答は、投稿の編集後に得られました。別の変数を明示的に作成する必要はありませんArrays.copyOf(T[] original, int newlength)

したがって、次のように簡単に書くことができます。

myList.add(Arrays.copyOf(myString, myString.length));
于 2013-01-03T18:32:20.190 に答える
1
List<String[]> myList = new ArrayList<String[]>();
String[] myString = {"foo", "bar"};
myList.add(myString); 

動作するはずです

于 2013-01-03T14:27:33.117 に答える
1

あなたはすでに myList.add(myString) を試しましたか?

于 2013-01-03T14:29:34.960 に答える