HashSet - хорошее решение общего назначения, но я думаю, что вы можете добиться большего. Посмотрите на первую букву месяца - jfmasond - если вы предварительно отфильтровываете их и проверяете только HashSet, если он проходит, он позаботится об огромном количестве ваших сценариев «вернуть ложь».
Вы можете настроить это несколькими способами - один супер простой способ сделать это - использовать оператор switch, хотя таблица поиска будет быстрее. Также обратите внимание, что вам нужно только проверить, находится ли первый символ между a и s, поэтому таблица поиска не должна иметь полное кодовое пространство Юникод (или UTF-8 в зависимости от требований).
Чтобы сделать это еще более эффективным, вы можете создать свою таблицу поиска так, чтобы она содержала первые 2 символа каждого месяца - итоговая таблица поиска не слишком велика, и это значительно уменьшило бы количество слов, которые должны быть проверено на хешсет.
PS - прежде чем делать что-либо из этого, вы должны выполнить некоторое профилирование и убедиться, что именно эта область вашего кода на самом деле является узким местом.