2015-09-16 59 views
-1

我想用for-loopclone()方法克隆我的ArrayList 4次,但我不能。 下面是(简单)的代码,我写道:java ArrayList克隆几次

static ArrayList<Integer> newArrList; 
    for (int n = 1; n <= 4; n++) { 
     ArrayList<Integer> arrList = new ArrayList<>(); 
     for (int i = 1; i <= 13; i++) { 
      arrList.add(i); 
     } 
     newArrList = (ArrayList<Integer>) arrList.clone(); 
     for (int i = 1; i <= 13; i++) { 
      newArrList.add(i); 
     } 
    } 

输出是: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] 它打印出我arrList只有2次,但我想它的4倍。像这样: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]

这是多次克隆ArrayList的最佳方法吗?我做错了什么?

+1

我不会把你做了什么“爽快”; - ) – mastov

+0

@mastov:我在努力! - 你能看到我做错了吗? – dustin

回答

2

你的代码似乎有点让我感到困惑,所以我无法指出你到底在哪里出错了。

我不明白的第一件事就是为什么你创建4次测试列表(在主循环中)。不应该只创建一次吗?

然后做一个clone,然后添加13个元素,然后将内容两次放到新列表中。一次作为原始内容的副本,然后作为硬编码数据。我不明白这背后的动机。

无论如何,我会用addAll只需要创建一个新的(空)单,并添加原始列表中的所有元素的4倍:

// create test list 
ArrayList<Integer> arrList = new ArrayList<>(); 
for (int i = 1; i <= 13; i++) { 
    arrList.add(i); 
} 

// clone 
ArrayList<Integer> newArrList = new ArrayList<>(); 
for (int i = 0; i < 4; i++) { 
    newArrList.addAll(arrList); 
} 
+0

这是'简单'和'更好'的代码。感谢那。 – dustin

+0

@dustin对不起,我无法解释你的代码到底出了什么问题。我只是不够明白。 – mastov

+0

没关系。我现在知道我在哪里做错了。 – dustin