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.
