如何使用arraylist复制另一个arraylist

时间:2019-05-01 10:49:59

标签: java

使用迭代器,我想将数组添加到另一个数组列表中。但是在将第一个列表的元素添加到第二个列表之后,前一个列表的元素将被粉碎。我该如何预防?

int main(void) {
    long sum = 0;
    int *pi = malloc(10 * sizeof(*pi));
    if(pi == NULL) {
        /* @TODO Error Handling */
    }
    printf("\n\nPlease put in 10 values.\n\n");
    for(int i = 0; i < 10; i++) {
        printf("%d. Value: ", i + 1);
        scanf("%d", pi + i);
        sum += *(pi + i);
    }
    printf("\nSum of dynamic allocated memory: %ld", sum);
    free(pi);
    return 0;
}

我希望输出为:{eren,123},{ezel,234},但实际输出为{eren,123},{eren,123}

2 个答案:

答案 0 :(得分:0)

您必须在每次循环迭代中初始化firstList,而不是在循环外声明一次:

while(iterator.hasNext()){
    GelirList firstList = new GelirList();
    ....
}

您必须这样做,否则您总是在编辑相同的引用

有关Java在这方面的工作方式的更多信息,我建议阅读另一篇文章:Is Java “pass-by-reference” or “pass-by-value”?

答案 1 :(得分:0)

由于GelirList是引用类型,因此相同的数据将被更新。使用这个:

while(iterator.hasNext()){
   GelirList firstList = new GelirList();
   //then the initialization
}