2015-08-19 15 views
7

Mam enum takiego:Jak zapisać wartość wyliczenia w tablicy?

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

muszę przechowywać wartości enumNiektóre Value1, Niektóre VALUE2 i Niektóre wartość3 w ArrayList.

mogę uzyskać wszystkie wartości w tablicy przy użyciu SomeEnum.values() i iteracyjne nad tej tablicy i zapisać wartość w ArrayList tak:

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

Czy istnieje inna metoda jak values() która zwraca tablicę Niektóre Value1, Niektóre wartości2 i Niektóre wartości3?

+0

Po prostu użyj 'Arrays.asList (values)', która zwraca listę. – KDM

Odpowiedz

9

Można zbudować tę listę wewnątrz enum sama jak ta:

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); 
    } 

} 

Następnie można uzyskać dostęp do tej listy z:

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

Jeśli używasz Java 8 i nie można zmienić enum :

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

Wygląda na to, że Java 8 może zrobić naprawdę fajne rzeczy. – Ridcully

2

Możesz po prostu utworzyć listę z następującej tablicy:

List<String> list = Arrays.asList(SomeEnum.values()); 
Powiązane problemy