如何在 ArrayList 中 运行 时间比较前一个索引与当前索引

How to compare the previous index with current index on run time in 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);
        }
    }                       
}

我认为你不需要在里面使用迭代器。只需使用 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