แปลงการแจงนับเป็นชุด / รายการ


172

มีวิธีบริดจ์ซับเดียวเพื่อดัมพ์ Enumeration ที่กำหนดให้กับ java.util.List หรือ java.util.Set หรือไม่?

สิ่งที่มีอยู่ในตัวเช่นArrays.asList()หรือCollection.toArray()ควรมีอยู่ที่ใดที่หนึ่ง แต่ฉันไม่พบสิ่งนั้นในหน้าต่างตัวประเมินของ IntelliJ ตัวดีบักเกอร์ (และผลลัพธ์ของ Google / SO ด้วย)

คำตอบ:


321

คุณสามารถใช้Collections.list()เพื่อแปลงEnumerationa เป็นListหนึ่งบรรทัด:

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

ไม่มีวิธีที่คล้ายกันในการรับ a Setแต่คุณยังสามารถทำได้เพียงหนึ่งบรรทัด:

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

อย่างใดฉันพลาดวิธีนี้ในขณะที่ซุ่มซ่อนในการเติมข้อความอัตโนมัติ ขอบคุณ!
Anton K


5

เมื่อใช้ฝรั่ง (ดูdoc ) Iterators.forEnumerationมี ให้Enumeration xคุณสามารถทำสิ่งต่อไปนี้:

เพื่อรับเซตที่ไม่เปลี่ยนรูป:

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

เพื่อรับรายการไม่เปลี่ยนรูป:

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

เพื่อรับ hashSet:

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

5

มีตัวอย่างง่ายๆของการแปลงการแจงนับเป็นรายการ สินค้านี้ผม Collections.list(enum)วิธี

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

}

การอ้างอิง: วิธีแปลงการแจงนับเป็นรายการ


3

หากคุณต้องการSetมากกว่าListคุณสามารถใช้EnumSet.allOf ()

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

อัปเดต : JakeRobb ถูกต้อง คำตอบของฉันเกี่ยวกับ java.lang.Enum แทน java.util.Enumeration ขออภัยสำหรับคำตอบที่ไม่เกี่ยวข้อง


2
ฉันค่อนข้างแน่ใจว่าผู้ถามถูกถามเกี่ยวกับ java.util.Enumeration ลูกพี่ลูกน้องมรดกของ Iterator ไม่ใช่ java.lang.Enum สิ่งที่คุณได้รับเมื่อคุณใช้คำหลัก 'enum'
JakeRobb

ฉันค้นหา google เพื่อ "java แปลง enum เป็นชุด" และกระทู้นี้กลับมาเป็นคำตอบแรก @ Timur ได้รับการโหวตของฉัน
ShellDude

-2

ฉันต้องการสิ่งเดียวกันและวิธีนี้ใช้งานได้ดีหวังว่ามันจะช่วยให้ใครบางคน

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

จากนั้นคุณจะได้รับ. name () ของการแจงนับของคุณ


5
คำตอบของคุณจะแสดงวิธีการแปลงอาร์เรย์เป็นรายการและจะเกิดขึ้นเมื่อคุณมีอาร์เรย์ของ Enumerations เท่านั้น คำถามเกี่ยวกับการแจงนับ -> การแปลงรายการ
kryger
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.