簡體   English   中英

在迭代器中添加 arraylist 對象而循環會導致第二個對象覆蓋一個對象

[英]adding arraylist object in iterator while loop causes second object to over write one object

我有一個使用迭代器迭代的數組列表。 迭代數據作為參數傳遞給方法 getDetails。 現在方法返回的數據被寫入一個arraylist detailsList。 因此,如果 arraylist DTOList 有兩個不同的對象,則第二個對象會覆蓋第一個對象。 所以當我閱讀列表時,它有兩個相同的對象內容。

List < BRType > detailsList= new ArrayList < BRType > ();
        List < RDTO > rDTOList = crList;
        List < ADTO > aDTOList = daList;
        Iterator < RDTO > rDTOIterator = rDTOList.iterator();
         Iterator < ADTO > aDTOIterator = aDTOList.iterator();
        while (rDTOIterator.hasNext() && aDTOIterator.hasNext()) {
            RDTO rDTO = rDTOIterator.next();
            ADTO aDTO = aDTOIterator.next();

        detailsList.add(getDetails(rDTO , aDTO , bookingRuleType,null));
    }

在第一個 while 循環中, detailsList 的代碼為 1 ,第二次運行時它的代碼為 2 。 所以當我運行下面的代碼時,我得到 2 和 2

  for(BRType d : detailsList){
                System.out.println(d.getCode());

            }

我知道了!!! 這是一個小錯誤。 在這個方法調用中

getMarCancelPolicyDepositRuleBySWCancelPolicyDepositRule(cancelDepositRuleDTO, cancelDepositAmountDTO, bookingRuleType,null)

該方法的bookingRuleType參數,該對象引用是在 while 循環之外創建的。 所以我把這個BookingRuleType bookingRuleType = new BookingRuleType(); 在 while 循環中,它的作用就像魅力一樣

暫無
暫無

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

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