将一个ArrayList的元素添加到另一个ArrayList中

17

是否可以将一个ArrayList的元素添加到另一个ArrayList中? 例如,如果一个ArrayList在索引0、1、2、3、4上有元素3、6、3、8、5,现在我想将3、6、3、8、5添加到另一个ArrayList的索引0上,这可能吗?

ArrayList<String> num = new ArrayList<String>();
 num.add("3");
 num.add("6");
 num.add("3");
 num.add("8");
 num.add("5");
ArrayList<String> result = new ArrayList<String>();
 for (int i = 0; i < num.size(); i++)
 {
        result.addAll(i,num);   
 }

我已经尝试过这个了,但它没有起作用。我的期望结果是当我尝试 System.out.println(result.get(0)); 时,结果应该是 [3 6 3 8 5]。


请解释您想要什么。我怀疑人们感到困惑。完成后,您希望result是什么? - ajb
请查看以下链接,了解ArrayList的ArrayList: https://dev59.com/518e5IYBdhLWcg3w_-hM - N Kaushik
7个回答

35

我认为你想要做的是这样:

for (int i = 0; i < num.size(); i++) {
    result.add(i, num.get(i)); 
}

或者只是这个:

result.addAll(num);

你现有的代码会多次将num中的所有元素加到result的连续起始位置,这很奇怪。


更新

我想要的是当我尝试使用System.out.println(result.get(0));时,结果必须为[3 6 3 8 5]

啊...我明白了...你想创建一个字符串列表,其中字符串是输入列表的表示:

做这个:

for (int i = 0; i < num.size(); i++) {
    result.add(i, num.toString()); 
}

这将给您所要求的输出。

另一种可能性是您想要一个字符串列表的列表:

ArrayList<ArrayList<String>> result = new ArrayList<>();
for (int i = 0; i < num.size(); i++) {
    result.add(i, num); 
}

那样也会给你想要的输出结果...只是出于不同的原因。


这只是将一个ArrayList中的元素复制到另一个ArrayList中。我想要的是将num的元素复制到索引0的result中。 - koshish kharel
@koshishkharel 你尝试了下一个直觉的逻辑步骤来尝试工作吗?那就是 result.addAll(0, num) - glglgl
@glglgl 如果num从文件中获取输入,而且文件包含多行。那么文件的第一行是3,6,3,8,5。每一行应该添加到结果的不同索引中。 - koshish kharel
@stephen C,我想要做的是读取包含多行数据(如3,6,3,8,5)的文件,并将其添加到ArrayList中。我的代码将3,6,3,8,5添加到索引0,1,2,3,4,但我希望将第一行添加到索引0,第二行添加到索引1,以此类推。你的建议是将每一行都添加到索引0。我该怎么办? - koshish kharel
@koshishkharel - 我建议你...>>好好想一想<<...并自己解决问题。你是Java程序员,对吧? - Stephen C

4
为了简单地复制所有元素,您可以执行以下操作:
ArrayList<String> result = new ArrayList<String>(num);

演示

如果您想复制特定索引处的所有元素,则必须更改结果ArrayList。

ArrayList<List<String>> result = new ArrayList<List<String>>();
result.add(0, num);   // 0 is the index

Demo


4
ArrayList<String> num = new ArrayList<String>();
 num.add("3");
 num.add("6");
 num.add("3");
 num.add("8");
 num.add("5");
ArrayList<String> result = new ArrayList<String>();
result.addAll(num);   

1

您的结果列表需要嵌套。它应该具有这种形式:

List<List<Integer>> result = new ArrayList<>();

你只需要这样做

result.add(0, num);

请注意,如果您使用的是Java 7以下的版本,则必须像这样声明result:List<List<Integer>> result = new ArrayList<List<Integer>>(); - jeremie

1

如果您将它放在循环内部,不要使用 all 方法,应该使用 add 方法。

如果您真的想使用 addAll,请将其放在循环外面。


1
ArrayList<String> obj1 = new ArrayList<String>();

obj1.add("3");
obj1.add("6");
obj1.add("3");
obj1.add("8");
obj1.add("5");

ArrayList obj2 = new ArrayList();

obj2.add(0, obj1);;

System.out.println("Size of the arraylist is --> "+obj2.size());

System.out.println("Value at index 0 --> "+obj2);

-1

试试这个示例代码

ArrayList<ArrayList<String>> nodes = new ArrayList<ArrayList<String>>();
  ArrayList<String> nodeList = new ArrayList<String>();
   nodes.add(nodeList);

http://www.tutorialhall.com/2015/03/how-to-add-arraylist-into-another-arraylist-java-code.html - malli

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接