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).

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

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

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


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.


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.


5
Jawaban Anda menunjukkan cara mengubah array menjadi daftar dan hanya terjadi bahwa Anda memiliki array Enumerasi. Pertanyaannya adalah tentang Enumerasi-> Konversi daftar.
kryger
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.