如何在 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
。
我正在检查 运行 时间 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
。