Konversi Penghitungan ke Set / Daftar

172

Apakah ada beberapa metode bridge satu-liner untuk membuang Enumerasi yang diberikan ke java.util.List atau java.util.Set?

Sesuatu bawaan seperti Arrays.asList()atau Collection.toArray()seharusnya ada di suatu tempat, tetapi saya tidak dapat menemukannya di jendela evaluator IntelliJ debugger saya (dan hasil Google / SO juga).

Anton K
sumber

Jawaban:

322

Anda dapat menggunakan Collections.list()untuk mengonversi sebuah Enumerationke Listdalam satu baris:

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

Tidak ada metode serupa untuk mendapatkan Set, namun Anda masih bisa melakukannya satu baris:

Set<T> set = new HashSet<T>(Collections.list(enumeration));
WhiteFang34
sumber
Entah bagaimana saya merindukan metode ini saat bersembunyi di dropdown pelengkapan otomatis. Terima kasih!
Anton K
5

Saat menggunakan jambu biji (Lihat doc ) ada Iterators.forEnumeration. Diberi Enumeration xAnda dapat melakukan hal berikut:

untuk mendapatkan Set yang tidak berubah:

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

untuk mendapatkan Daftar yang tidak berubah:

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

untuk mendapatkan hashSet:

Sets.newHashSet(Iterators.forEnumeration(x));
Alex
sumber
5

Ada contoh sederhana dari enumerasi konversi ke daftar. untuk ini saya menggunakan Collections.list(enum)metode.

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

}

Referensi: Cara mengonversi enumerasi ke daftar

Anuj Dhiman
sumber
3

Jika Anda membutuhkan Setdaripada List, Anda dapat menggunakan EnumSet.allOf () .

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

Pembaruan : JakeRobb benar. Jawaban saya adalah tentang java.lang.Enum bukan java.util.Enumeration. Maaf atas jawaban yang tidak terkait.

Timur Levadny
sumber
2
Saya cukup yakin penanya bertanya tentang java.util.Enumerasi, sepupu warisan Iterator, bukan java.lang.Enum, hal yang Anda dapatkan saat menggunakan kata kunci 'enum'.
JakeRobb
Saya melakukan pencarian google untuk "java convert enum menjadi set" dan utas ini kembali sebagai tanggapan pertama. @Timur mendapatkan dukungan saya.
ShellDude
-2

Saya membutuhkan hal yang sama dan solusi ini berfungsi dengan baik, semoga dapat membantu seseorang juga

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

maka Anda bisa mendapatkan .name () dari enumerasi Anda.

S_intg
sumber
5
Jawaban Anda menunjukkan cara mengubah array menjadi daftar dan hanya terjadi bahwa Anda memiliki array Enumerasi. Pertanyaannya adalah tentang Enumerasi-> Konversi daftar.
kryger