2015-08-19 16 views
7

Ich habe eine enum wie folgt aus:Wie man den Wert von enum in arraylist speichert?

public enum SomeEnum 
{ 
    ENUM_VALUE1("Some value1"), 
    ENUM_VALUE2("Some value2"), 
    ENUM_VALUE3("Some value3"); 
} 

Ich brauche Wert1, Einige Wert2 speichern Werte von enum und Einige value3 in einem ArrayList.

Ich kann alle Werte in einem Array erhalten SomeEnum.values() mit und iterieren diesem Array und den Wert in einem ArrayList wie folgt aus:

SomeEnum values[] = SomeEnum.values(); 
ArrayList<SomeEnum> someEnumArrayList = new ArrayList<SomeEnum>(); 
for(SomeEnum value:values) 
{ 
    someEnumArrayList.add(value.getValue()); 
} 

Gibt es eine andere Methode, wie values(), dass einige Wert1 Array von zurück, Einige Wert2 und Einige Wert3?

+0

Verwenden Sie einfach 'Arrays.asList (Werte)', die eine Liste zurückgibt. – KDM

Antwort

9

Sie diese Liste in der enum sich wie folgt aufbauen könnte:

public enum SomeEnum { 

    ENUM_VALUE1("Some value1"), 
    ENUM_VALUE2("Some value2"), 
    ENUM_VALUE3("Some value3"); 

    private static final List<String> VALUES; 

    private final String value; 

    static { 
     VALUES = new ArrayList<>(); 
     for (SomeEnum someEnum : SomeEnum.values()) { 
      VALUES.add(someEnum.value); 
     } 
    } 

    private SomeEnum(String value) { 
     this.value = value; 
    } 

    public static List<String> getValues() { 
     return Collections.unmodifiableList(VALUES); 
    } 

} 

Dann können Sie diese Liste mit Zugang:

List<String> values = SomeEnum.getValues(); 
4

Wenn Sie mit Java 8 und kann nicht die Enum ändern :

List<String> list = Stream.of(SomeEnum.values()) 
          .map(SomeEnum::getValue) 
          .collect(Collectors.toList()); 
+0

Scheint wie Java 8 kann wirklich coole Sachen machen. – Ridcully

2

Sie können einfach Liste aus Array wie folgt erstellen:

List<String> list = Arrays.asList(SomeEnum.values()); 
Verwandte Themen