簡體   English   中英

如何使用arraylist復制另一個arraylist

[英]How to arraylist to copy another arraylist

使用迭代器,我想將數組添加到另一個數組列表中。 但是在第一個列表的元素添加到第二個列表之后,前一個列表的元素被粉碎。 我如何防止這種情況?

GelirList firsList = new GelirList();
List(GelirList) finalList =  new ArrayList<>;

Iterator<DvzGelir> iterator = input.getGelirlist().iterator();

while(iterator.hasNext()){
DvzGelir exList = (DvzGelir) iterator.next()

firstList.setName(exList.getName());
firstList.setNumber(exList.getNumber());

finalList.add(firstList);
}

我期望輸出:{eren,123}, {ezel,234},但實際輸出是 {eren,123}, {eren,123}

您必須在每次循環迭代中初始化firstList而不是在循環外聲明一次:

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

你必須這樣做,否則你總是在編輯相同的參考

有關 Java 在這方面如何工作的更多信息,我建議閱讀另一篇文章: Java 是“按引用傳遞”還是“按值傳遞”?

由於GelirList是引用類型,因此更新相同的數據。 用這個:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM