Ich möchte eine Liste mit allen möglichen Werten einer Aufzählung füllen.
Da ich mich kürzlich in sie verliebt habe EnumSet
, habe ich sie genutztallOf()
EnumSet<Something> all = EnumSet.allOf( Something.class);
List<Something> list = new ArrayList<>( all.size());
for (Something s : all) {
list.add( s);
}
return list;
Gibt es einen besseren Weg (wie bei einem nicht verschleierten Einzeiler), um das gleiche Ergebnis zu erzielen?
Antworten:
Ich würde eine Liste an erster Stelle nicht verwenden, da ein EnumSet angemessener ist, aber Sie können es tun
oder
List<Something> somethingList = new ArrayList<Something>(EnumSet.allOf(Something.class));
quelle
Natural Order
die Enum verschoben. Aus diesem Grund ist aList<Enum>
im Vergleich zu an nützlichEnumSet
.Class.getEnumConstants()
quelle
Es gibt einen Konstruktor, für
ArrayList
denJetzt
EnumSet
erweitert,AbstractCollection
so dass Sie einfach tun könnenArrayList<Something> all = new ArrayList<Something>(enumSet)
quelle
Versuchen
enum E { E1, E2, E3 } public static void main(String[] args) throws Exception { List<E> list = Arrays.asList(E.values()); System.out.println(list); }
quelle
List<Something> result = new ArrayList<Something>(all);
EnumSet
ist eine Java-Sammlung, da sie dieSet
Schnittstelle implementiert :public interface Set<E> extends Collection<E>
Alles, was Sie mit einer Sammlung tun können, können Sie mit einer Sammlung tun
EnumSet
.quelle
Dies ist etwas besser lesbar:
quelle
Something.class.getEnumConstants()
richtig machen?Something.values();
Versuche dies:
... = new ArrayList<Something>(EnumSet.allOf(Something.class));
wie
ArrayList
hat ein Konstruktor mitCollection<? extends E>
. Verwenden Sie diese Methode jedoch nur, wenn Sie sie wirklich verwenden möchtenEnumSet
.Alle Aufzählungen haben Zugriff auf die Methode
values()
. Es gibt ein Array aller Aufzählungswerte zurück:quelle
Sie können auch verwenden:
quelle
private ComboBox gender; private enum Selgender{Male,Famle}; ObservableList<Object> observableList =FXCollections.observableArrayList(Selgender.values());
quelle