如何复制数组列表中的所有元素,然后将它们粘贴到数组列表中?示例提供

时间:2014-04-19 01:39:34

标签: java eclipse for-loop arraylist

我想将ArrayList的所有元素复制到ArrayList的后面。例如,在我的ArrayList中,有{1,2,3,4},我希望它像这样 - > {1,2,3,4,1,2,3,4}。 我该怎么做?

     for (int pos = 0; pos <  hand.size (); pos ++)
       {
           hand.add (hand.get(pos));
       }

这给我一个错误,说出内存不足...... 有没有办法使它工作? 谢谢

3 个答案:

答案 0 :(得分:0)

你的循环看起来大致如下:

is pos < hand.size()?
if so, add something to hand
pos++

表示每次循环时pos都会增加,但hand.size()也会增加,依此类推。你得到了内存不足的错误,因为循环无限运行,而且列表太大了。

一种方法:

int length = hand.size();
for (int pos = 0; pos < length; pos++) {
    hand.add(hand.get(pos));
}

答案 1 :(得分:0)

怎么样

hand.addAll(new ArrayList<>(hand))

答案 2 :(得分:0)

每次添加元素时,大小都会增加,因此循环永远不会终止。一个简单的解决方法是在循环之前将大小保存在变量中:

int size = hand.size()(
for (int pos = 0; pos <  size; pos ++)
{
    hand.add (hand.get(pos));
}

但最简单的方法是:

hand.addAll(hand); // Note: It is safe to call addAll() on itself