Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将数组复制/添加到数组列表中_Java_Arrays - Fatal编程技术网

Java 如何将数组复制/添加到数组列表中

Java 如何将数组复制/添加到数组列表中,java,arrays,Java,Arrays,我是java新手,我一直在努力将字符串数组复制到ArrayList,但它不存储值,而是存储数组的地址 String[] newLine = { "name", "location", "price" }; List<String[]> outList = new ArrayList<String[]>(); outList.add(newLine); for(String[] rows: outList) { System.out.println(row); }

我是java新手,我一直在努力将字符串数组复制到ArrayList,但它不存储值,而是存储数组的地址

String[] newLine = { "name", "location", "price" };
List<String[]> outList = new ArrayList<String[]>();
outList.add(newLine);

for(String[] rows: outList)
{
    System.out.println(row);
}
输出:

[“新价值”、“位置”、“价格”]

如何将数组的值添加/复制到ArrayList

也许还不清楚,但我希望在结尾有这样的内容:

outList should contain *n* String Arrays e.g.      

["name", "location", "price"] 
["name2", "location2", "price2"]
["name3", "location3", "price3"]
["name4", "location4", "price4"]

您可以简单地执行以下操作:

list.addAll(Arrays.asList(myArray));

您可以简单地执行以下操作:

list.addAll(Arrays.asList(myArray));

您可以通过存储阵列的副本而不是阵列本身来实现这一点:

String[] newLine = { "name", "location", "price" }
String[] copy = newLine.clone();
outList.add(copy);
clone()
方法将创建具有相同元素和大小但引用/地址不同的数组副本

如果现在更改原始数组的元素,则副本不会更改

newLine[0] = "NEW VALUE";
System.out.println(Arrays.toString(newLine)); // prints [NEW VALUE, location, price]
System.out.println(Arrays.toString(copy)); // prints [name, location, price]

您可以通过存储阵列的副本而不是阵列本身来实现这一点:

String[] newLine = { "name", "location", "price" }
String[] copy = newLine.clone();
outList.add(copy);
clone()
方法将创建具有相同元素和大小但引用/地址不同的数组副本

如果现在更改原始数组的元素,则副本不会更改

newLine[0] = "NEW VALUE";
System.out.println(Arrays.toString(newLine)); // prints [NEW VALUE, location, price]
System.out.println(Arrays.toString(copy)); // prints [name, location, price]

我发现我可以做到这一点:

String[] newLine = { "name", "location", "price" };

List<String[]> outList = new ArrayList<String[]>();

outList.add(new String []{newLine[0], newLine[1], newLine[2]});
String[]newLine={“名称”、“位置”、“价格”};
列表大纲列表=新的ArrayList();
add(新字符串[]{newLine[0],newLine[1],newLine[2]});
现在,如果我更改换行符的值,它将不会更改大纲视图。
但我不确定是否有更好的方法可以做到这一点。

我已经发现我可以做到这一点:

String[] newLine = { "name", "location", "price" };

List<String[]> outList = new ArrayList<String[]>();

outList.add(new String []{newLine[0], newLine[1], newLine[2]});
String[]newLine={“名称”、“位置”、“价格”};
列表大纲列表=新的ArrayList();
add(新字符串[]{newLine[0],newLine[1],newLine[2]});
现在,如果我更改换行符的值,它将不会更改大纲视图。
但是我不确定是否有更好的方法来实现这一点。

看这篇文章:看这篇文章:他不想添加单个元素,而是数组本身。--@Clashsoft这似乎不是他要求的“将数组的值添加/复制到ArrayList”@Woot4Moo它不起作用。它抛出一个错误“类型不匹配:无法从列表转换到集合”<?扩展字符串[]>。他不想添加单个元素,但要添加数组本身。--@Clashsoft这似乎不是他要求的“将数组的值添加/复制到ArrayList”@Woot4Moo它不起作用。它抛出一个错误“类型不匹配:无法从列表转换到集合”<?扩展字符串[]>。但是,如果我想用n个数组值填充我的outputList,那么我必须创建n个克隆?正确-但没有其他方法。如果不复制/克隆阵列,则会遇到问题中所述的问题。但别担心,这是一个浅拷贝:实际字符串没有被拷贝,所以开销不是太大。但是如果我想用n个数组值填充我的输出列表,那么我必须创建n个克隆?正确-但没有其他方法。如果不复制/克隆阵列,则会遇到问题中所述的问题。但别担心,这是一个肤浅的复制:实际的字符串没有被复制,因此开销也不算太大。
newstring[]{newLine[0],newLine[1],newLine[2]}
newLine.clone()
基本相同。我认为您可能应该接受@Clashsoft的答案…
newstring[]{newLine[0],newLine[1],newLine[2]}
newLine.clone()基本相同。我想你应该接受@Clashsoft的回答。。。