2017-10-11 8 views
-1

J'ai une liste qui est itérée à l'aide d'un itérateur. les données itérées sont passées à une méthode getDetails en tant que paramètre. maintenant la méthode retournée est écrite dans une liste de détails d'arrailist. Donc, si l'arborescence DTOList a deux objets différents, le second objet est terminé en écrivant le premier. Donc quand je lis la liste, il y a deux contenus d'objets identiques.Ajout d'un objet arraylist dans l'itérateur pendant que la boucle provoque l'écrasement d'un objet par le second objet

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)); 
    } 

ici pendant la première boucle while la liste detailsListhas le code de 1, et lors de la deuxième exécution il a 2. donc quand je cours le code ci-dessous je reçois 2 et 2

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

      } 
+0

Et la question est ...? Voulez-vous avoir des objets uniques dans la liste ou voulez-vous que les objets soient dans la liste plusieurs fois? – deHaar

+0

question est il ne devrait pas écraser le premier. j'ai besoin d'unique – Coder17

Répondre

0

Je l'ai eu !!! c'était une petite erreur. dans ce procédé se nomment

getMarCancelPolicyDepositRuleBySWCancelPolicyDepositRule(cancelDepositRuleDTO, cancelDepositAmountDTO, bookingRuleType,null) 

le paramètre bookingRuleType le procédé, que la référence de l'objet a été créé en dehors de la boucle while. donc j'ai mis ce BookingRuleType bookingRuleType = new BookingRuleType(); à l'intérieur de la boucle while et cela a fonctionné comme charme