Me gustaría llenar una lista con todos los valores posibles de una enumeración.
Desde que me enamoré recientemente EnumSet
, aprovechéallOf()
EnumSet<Something> all = EnumSet.allOf( Something.class);
List<Something> list = new ArrayList<>( all.size());
for (Something s : all) {
list.add( s);
}
return list;
¿Existe una mejor manera (como en un trazador de líneas no ofuscado) para lograr el mismo resultado?
Respuestas:
No usaría una Lista en los primeros lugares ya que un EnumSet es más apropiado, pero puede hacerlo
o
List<Something> somethingList = new ArrayList<Something>(EnumSet.allOf(Something.class));
fuente
Natural Order
el Enum, es por eso que unList<Enum>
es útil frente a unEnumSet
.EnumSet
no tiene unget()
método (acceso aleatorio fácil) mientras queList
sí. Esto puede ser importante para lo que sea que List / EnumSet esté destinado a ser utilizadoClass.getEnumConstants()
fuente
Hay un constructor para el
ArrayList
cual esAhora, se
EnumSet
extiendeAbstractCollection
para que puedas hacerArrayList<Something> all = new ArrayList<Something>(enumSet)
fuente
tratar
enum E { E1, E2, E3 } public static void main(String[] args) throws Exception { List<E> list = Arrays.asList(E.values()); System.out.println(list); }
fuente
List<Something> result = new ArrayList<Something>(all);
EnumSet
es una colección de Java, ya que implementa laSet
interfaz:public interface Set<E> extends Collection<E>
Entonces, cualquier cosa que pueda hacer con una colección, puede hacerlo con un
EnumSet
.fuente
Esto es un poco más legible:
fuente
Something.class.getEnumConstants()
correcto?Something.values();
Prueba esto:
... = new ArrayList<Something>(EnumSet.allOf(Something.class));
como
ArrayList
tiene un constructor conCollection<? extends E>
. Pero use este método solo si realmente desea usarEnumSet
.Todas las enumeraciones tienen acceso al método
values()
. Devuelve una matriz de todos los valores de enumeración:fuente
También puede utilizar:
fuente
private ComboBox gender; private enum Selgender{Male,Famle}; ObservableList<Object> observableList =FXCollections.observableArrayList(Selgender.values());
fuente