Когде опустил руки то копипастил чужие коды и смотрел и сравнивал и оказалось в итоге что мой изначальный самый первый код был правильны! HashMap.Entry<String, Date> pair = iterator.next(); if (pair.getValue().getMonth() > 4 && pair.getValue().getMonth() < 8) iterator.remove(); у меня были промежутки между 5 и 9 так как июнь у нас 6 июль 7 и август 8. и у меня не проходило валидацию. в чужом коде видел промежуток 4 < mount < 8 посмеялся и когда с такими числами прошла валидация офигел, ведь эти условия захватывают промежуток с 5,6,7. Объясните пожалуйста как так получается, не хочется в уйти не разобравшись????