java ArrayList 克隆了几次

java ArrayList clone several times

我正在尝试使用 for-loopclone() 方法克隆我的 ArrayList 4 次,但我做不到。 下面是我写的(简单的)代码:

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 的最佳方式吗?我做错了什么?

你的代码对我来说似乎有点太混乱了,所以我无法指出你到底哪里出错了。

我不明白的第一件事是为什么要创建测试列表 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);
}