tl; dr
EnumSet.of(Month.JANUARY , Month.MARCH , Month.OCTOBER , Month.DECEMBER).toString()
Enum
Si su lenguaje proporciona una potente función de enum al igual que Java, definen una docena de objetos. Ver Oracle Tutorial.
java.time.Month
Las clases incluyen java.time la mano Month
enumeración, la definición de una docena de objetos uno por cada mes del año, de enero a diciembre.
Se numeran 1-12, y se definen en el orden apropiado, enero a diciembre.
En su base de código, utilice los objetos de esta enumeración para reemplazar cualquier uso de simples números enteros o uso de cadenas de nombres de mes. El uso de objetos a lo largo Month
proporciona seguridad de tipos, asegura valores válidos, y hace que el código sea más auto-documentado.
En Java, la EnumSet
y EnumMap
son implementaciones de Set
y Map
que están optimizados para valores de enumeración. Se ejecutan muy rápido y toman muy poca memoria.
EnumSet<Month> months = EnumSet.of(Month.JANUARY , Month.MARCH , Month.OCTOBER , Month.DECEMBER);
Los EnumSet
itera en orden natural, el orden en que se declaran las constantes de enumeración. Por lo tanto, no es necesario ordenar explícitamente su colección.
La clase incluye un método getDisplayName
para generar una cadena localizada del nombre del mes. Especifique un TextStyle
durante cuánto tiempo o abreviado desea el texto. Y especifique un Locale
para (a) el lenguaje humano para usar en la traducción, y (b) las normas culturales para decidir cuestiones tales como abreviatura, puntuación y uso de mayúsculas y minúsculas.
for(Month month : months) {
String output = month.getDisplayName(TextStyle.SHORT_STANDALONE , Locale.CANADA_FRENCH); // Or Locale.US, Locale.ITALY, etc.
System.out.println(output);
}
+1 solución muy elegante! – jspcal
+1 ¿Podría publicar algo un poco más algorítmico? – OscarRyz
Teniendo en cuenta que tiene un conjunto de elementos con nombre, la única forma de hacerlo más algorítmico sería utilizar los hacks basados en el hash:> - p. encontrar un hash que para los nombres de los meses da valores crecientes. –