2015-08-19 24 views
7

Böyle bir enum vardır:Sayım değeri arraylistte nasıl saklanır?

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

Bir ArrayList içinde enumBazı deger1, Bazı deger2 ve Bazı değer3 değerlerini saklamak gerekir. Bazı deger1 dizi döner values() gibi herhangi bir başka yöntem var

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

:

I SomeEnum.values() kullanarak bir dizideki tüm değerleri almak ve bu dizi yineleme ve böyle bir ArrayList değeri saklayabilir, Bazı değerler2 ve Bazı değerler3?

Böyle enum nun içine o listeyi inşa edebileceğini
+0

Sadece bir liste döndüren 'Arrays.asList (değerler)' işlevini kullanın. – KDM

cevap

9

:

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

} 

Sonra bu listeyi erişebilirsiniz:

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

Java 8 kullanıyor ve enum değiştiremiyorsanız :

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

Java 8'in gerçekten harika şeyler yapabileceği anlaşılıyor. – Ridcully

2

Aşağıdaki gibi bir dizi listeyi oluşturabilirsiniz:

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