Numaralandırmayı bir Kümeye / Listeye Dönüştür


172

Belirli bir numaralandırmayı java.util.List veya java.util.Set'e dökmek için tek katmanlı bir köprü yöntemi var mı?

Bir yerde yerleşik olan Arrays.asList()veya Collection.toArray()böyle bir yerde bulunması gereken bir şey var, ancak bunu IntelliJ hata ayıklayıcının değerlendirici penceresinde (ve Google / SO sonuçları da) bulamıyorum.

Yanıtlar:


322

Birini bir satırda a Collections.list()dönüştürmek için kullanabilirsiniz :EnumerationList

List<T> list = Collections.list(enumeration);

A almak için benzer bir yöntem yoktur Set, ancak yine de bir satır yapabilirsiniz:

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

Her nasılsa, otomatik tamamlama açılır listesinde gizlenirken bu yöntemi kaçırdım. Teşekkürler!
Anton K


5

Guava kullanırken (Bkz. Doc ) vardır Iterators.forEnumeration. VerilenEnumeration x aşağıdakileri yapabilirsiniz:

değişmez bir Set elde etmek için:

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

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

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

bir karma almak için

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

5

Numaralandırmayı listeye dönüştürmenin basit bir örneği var. Bunun için Collections.list(enum)yöntem 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: Numaralandırma listeye nasıl dönüştürülür


3

Bunun Setyerine List, EnumSet.allOf () kullanabilirsiniz .

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

Güncelleme : JakeRobb haklı. Cevabım java.util.Enumeration yerine java.lang.Enum ile ilgili. İlgisiz cevap için özür dilerim.


2
Asker, 'enum' anahtar kelimesini kullandığınızda aldığınız şey java.lang.Enum değil, Iterator'ın eski kuzeni olan java.util.Eneration hakkında sorular sorduğundan eminim.
JakeRobb

"Bir kümeye java dönüştürmek enum" için bir google arama yaptım ve bu iş parçacığı ilk yanıt olarak geri geldi. @ Timur benim oyumu alır.
ShellDude

-2

Aynı şeye ihtiyacım vardı ve bu çözüm iyi çalışıyor, umarım birisine de yardımcı olabilir

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

numaralandırmanızın .name () yöntemini alabilirsiniz.


5
Cevabınız bir dizinin bir listeye nasıl dönüştürüleceğini gösterir ve yalnızca bir dizi Numaralandırmanız olduğu görülür. Soru, Numaralandırma-> Liste dönüşümü hakkındaydı.
kryger
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.