-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 回答