2017-11-03 5 views
0

前回のインデックスArrayListの実行時に、現在のインデックスの値と同じ値があることを確認しています。以前の値が現在の値と比較して同じであれば、リストに再び追加したくありません。どうやってやるの?私が試しているコードを以下に見てください:ArrayListの実行時の現在のインデックスと前回のインデックスを比較する方法

List<EventDto> liveEvents = new ArrayList<EventDto>(); 
EventDto liveTvEventDto = null; 
List<CustomerEventDetails> customerDetails = odsRepository.getEventDetails(countryCode, customerId);   
if (customerDetails.size() > 0) {   
    for (CustomerEventDetails customerData : customerDetails) { 
     liveTvEventDto = new EventDto(); 
     liveTvEventDto.setCountryCode(customerData.getCountryCode()); 
     liveTvEventDto.setCustomerId(customerData.getCustomerId()); 

     ListIterator<EventDto> listIterator = liveEvents.listIterator(); 

     if (listIterator.previousIndex() == -1) { 
      listIterator.next();  

      int i =listIterator.previousIndex(); 
      System.out.println("listIterator:"+liveEvents.get(i)); 
      if (!(StringUtility.trimmedOrEmptyIfNull(liveEvents.get(i).getCustomerId()).equals(StringUtility.trimmedOrEmptyIfNull(liveTvEventDto.getCustomerId())) 
           && StringUtility.trimmedOrEmptyIfNull(liveEvents.get(i).getCountryCode()).equals(StringUtility.trimmedOrEmptyIfNull(liveTvEventDto.getCountryCode())))) 
       liveEvents.add(liveTvEventDto); 
     } 
    }      
} 
+0

強化されたforループの代わりに通常のループを使用してみませんか? –

+0

どうすればこのループを使用できますか? – user3548196

+0

回答を追加しました。それが役立つかどうかを見てください。 –

答えて

0

私はあなたがイテレータを使用する必要はないと思います。 size()メソッドを使用して最後のインデックスを取得するだけです。

for (CustomerEventDetails customerData : customerDetails) { 
    liveTvEventDto = new EventDto(); 
    // Set member variables 

    if (liveEvents.size() > 0) { 
     System.out.println("Last Object: " + liveEvents.get(liveEvents.size() - 1)); 

     if (/* Logic for checking if the objects are NOT equal */) 
      liveEvents.add(liveTvEventDto); 
    } else { 
     liveEvents.add(liveTvEventDto); 
    } 
} 

注:代わりにArrayListを使用しての、あなたがオブジェクトのequals()方法における平等のためのロジックとHashSetを使用することができます。

+0

このコードの例をHashSetで教えてください。 – user3548196

+0

更新して申し訳ありません。オブジェクトの 'equals()'メソッドを使います。これは良い例と思われます - > https://www.programcreek.com/2013/09/java-hashcode-equals-contract-set-contains/ –

+0

サイズをリストに追加する前にどのようにgreateしてから0にすることができますか) if(liveEvents.size()> 0){ System.out.println( "最後のオブジェクト:" + liveEvents.get(liveEvents.size() - 1)); if(オブジェクトが等しくないかどうかをチェックするロジック/ *) liveEvents.add(liveTvEventDto); } – user3548196

関連する問題