java ArrayList 克隆了几次
java ArrayList clone several times
我正在尝试使用 for-loop
和 clone()
方法克隆我的 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);
}
我正在尝试使用 for-loop
和 clone()
方法克隆我的 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
:
// 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);
}