繁体   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