我想将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));
}
这给我一个错误,说出内存不足...... 有没有办法使它工作? 谢谢
答案 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