2011-04-10 22 views
113

Belirli bir Numaralandırma'yı java.util.List veya java.util.Set'e dökmek için bazı tek katlı köprü yöntemi var mı?Numaralandırmayı bir Kümeye/Listeye Dönüştür

Arrays.asList() veya Collection.toArray() gibi yerleşik bir şey bulunmalıdır, ancak IntelliJ hata ayıklayıcımın değerlendirici penceresinde (ve Google/SO sonuçlarında da) bulamıyorum. peşin

sayesinde Anton

cevap

221

tek bir çizgide bir List bir Enumeration dönüştürmek için Collections.list() kullanabilirsiniz: ancak yine de yapabiliriz,

bir Set almak için hiçbir benzerlik yöntemi var
List<T> list = Collections.list(enumeration); 

bir satır:

Set<T> set = new HashSet<T>(Collections.list(enumeration)); 
+0

:

ImmutableList.copyOf(Iterators.forEnumeration(x)); 

bir HashSet almak için:

ImmutableSet.copyOf(Iterators.forEnumeration(x)); 

bir değişmez Listesini almak için:

bir değişmez Set için Her nasılsa ben otomatik tamamlama açılırken gizlenirken bu yöntemi özledim. Teşekkürler! –

-1

Ben, aynı şeyi ve bu çözüm çalışma cezası gerekli birisi de

Enumeration[] array = Enumeration.values(); 
List<Enumeration> list = Arrays.asList(array); 

o zaman numaralandırma .name() alabilirsiniz yardımcı olabilir umuyoruz.

+4

Yanıtınız, bir dizinin bir listeye nasıl dönüştürüleceğini gösterir ve yalnızca bir dizi Sıralama olduğunda gerçekleşir. Soru, Numaralandırma -> Liste dönüşümü hakkındaydı. – kryger

5

Numaralandırmayı listeye dönüştürmenin basit bir örneği vardır. Bunun için Collections.list(enum) yöntemini kullandım.

public class EnumerationToList { 

    public static void main(String[] args) { 
     Vector<String> vt = new Vector<String>(); 
     vt.add("java"); 
     vt.add("php"); 
     vt.add("array"); 
     vt.add("string"); 
     vt.add("c"); 

     Enumeration<String> enm = vt.elements(); 
     List<String> ll = Collections.list(enm); 
     System.out.println("List elements: " + ll); 
    } 

} 

Referans: Eğer Set yerine List gerekiyorsa How to convert enumeration to list

3

, sen EnumSet.allOf() kullanabilirsiniz.

Set<EnumerationClass> set = EnumSet.allOf(EnumerationClass.class); 

Güncelleme: JakeRobb haklı. Cevabım java.util.Enumeration yerine java.lang.Enum hakkında. Ilgisiz cevap için üzgünüm.

+1

Askerin java.util.Enumeration'dan, Iterator'un eski kuzeninden, java.lang.Enum'dan, 'enum' anahtar sözcüğünü kullandığınızda aldığınız şey hakkında sorduğundan eminim. – JakeRobb

2

Guava'yı kullanırken (Bkz. doc) Iterators.forEnumeration vardır. Verilen Yapabileceğiniz bir Enumeration x aşağıdaki:

Sets.newHashSet(Iterators.forEnumeration(x));