2017-11-03 10 views
0

이전 인덱스 인 ArrayList에 현재 인덱스와 동일한 값이있는 런타임을 확인하고 있습니다. 이전 값이 현재 값과 비교되는 경우 List에 다시 추가하고 싶지 않습니다. 어떻게해야합니까? 내가 시도한 코드를 아래에서 찾으십시오 :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 할 수 있습니까? :) if (liveEvents.size()> 0) { System.out.println ("마지막 객체 :"+ liveEvents.get (liveEvents.size() - 1)); if (/ * 객체가 같지 않은지 확인하기위한 논리 * /) liveEvents.add (liveTvEventDto); } – user3548196