tl; dr
EnumSet.of( Month.JANUARY , Month.MARCH , Month.OCTOBER , Month.DECEMBER ).toString()
Enum
Если ваш язык предоставляет мощное средство enum , как и Java, определите дюжину объектов.См. Oracle Tutorial .
java.time.Month
. java.time классы включают удобное перечисление Month
,определяя дюжину объектов по одному на каждый месяц года январь-декабрь.
Они пронумерованы от 1 до 12 и определены в правильном порядке с января по декабрь.
В вашей кодовой базе используйтеобъекты этого перечисления, чтобы заменить любое использование простых целых чисел или использование строк имени месяца.Использование Month
объектов повсюду обеспечивает безопасность типов, обеспечивает допустимые значения и делает ваш код более самодокументируемым.
В Java EnumSet
и EnumMap
являются реализациями Set
и Map
, которые оптимизированы для значений перечисления.Они выполняются очень быстро и занимают очень мало памяти.
EnumSet<Month> months = EnumSet.of( Month.JANUARY , Month.MARCH , Month.OCTOBER , Month.DECEMBER );
EnumSet
повторяется в естественном порядке, порядке, в котором объявлены константы перечисления.Так что нет необходимости явно сортировать вашу коллекцию.
Класс включает в себя метод getDisplayName
для генерации локализованной строки имени месяца.Укажите TextStyle
как долго или сокращенно вы хотите текст.И укажите Locale
для (а) человеческого языка, используемого в переводе, и (б) культурных норм для решения таких вопросов, как сокращение, пунктуация и использование заглавных букв.
for( Month month : months ) {
String output = month.getDisplayName( TextStyle.SHORT_STANDALONE , Locale.CANADA_FRENCH ); // Or Locale.US, Locale.ITALY, etc.
System.out.println( output );
}