将字符串数组添加到列表中

时间:2013-01-03 14:26:42

标签: java list arrays

对于add()方法,如何将字符串数组添加到字符串数组列表中? E.g:

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

编辑:是的我已尝试myList.add(myString)但是,只希望myString的值不通过引用传递。

4 个答案:

答案 0 :(得分: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没有更短的解决方案,只是为了创建另一个变量。 - meiryo

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"});

答案 1 :(得分:2)

在你的帖子编辑之后得到了这个答案。您不必显式创建另一个变量,请使用Arrays.copyOf(T[] original, int newlength)

所以你可以写一下:

myList.add(Arrays.copyOf(myString, myString.length));

答案 2 :(得分:1)

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

应该工作

答案 3 :(得分:1)

你是否已经尝试过myList.add(myString);