使用迭代器,我想将数组添加到另一个数组列表中。但是在将第一个列表的元素添加到第二个列表之后,前一个列表的元素将被粉碎。我该如何预防?
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}
答案 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
}