I was writing a purging logic from a HashSet
to keep last 2 days' data :-
while(mscDatesIterator.hasNext()) {
String entry = (String) mscDatesIterator.next();
Date currentDate = SystemTime.getCurrentTime();
String currentDateString = subscriberProfile.getSubscriberID() + sdf.format(currentDate);
Integer currentStringMonth = Integer.parseInt(currentDateString.substring(currentDateString.length() - 4, currentDateString.length() - 2));
Integer entryStringMonth = Integer.parseInt(entry.substring(entry.length() - 4, entry.length() - 2));
Integer currentStringDay = Integer.parseInt(currentDateString.substring(currentDateString.length() - 2, currentDateString.length()));
Integer entryStringDay = Integer.parseInt(entry.substring(entry.length() - 2, entry.length()));
Integer currentStringYear = Integer.parseInt(currentDateString.substring(currentDateString.length() - 8, currentDateString.length() - 4));
Integer entryStringYear = Integer.parseInt(entry.substring(entry.length() - 8, entry.length() - 4));
if((!currentStringYear.equals(entryStringYear)) || (!currentStringMonth.equals(entryStringMonth)) || (currentStringDay - entryStringDay > 2))
mscDatesIterator.remove();
}
This works just fine, but when I use currentStringYear != entryStringYear
, it returns true
even though both values are 2022.
Also, if I change the dataType from class Integer
to primitive int
, currentStringYear != entryStringYear
returns false correctly.
I don't understand this behavior, any light shed on this will be appreciated.