首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 進階教程(五):深入理解 EnumSet 集合

     編輯:Java 相關知識

EnumSet 是 Java 5 引入的專用集合實現,專門用於處理枚舉類型。雖然在實際開發中使用頻率不高,但掌握其特性對於處理枚舉相關場景非常有幫助。本文將通過代碼示例詳細介紹 EnumSet 的核心用法與特點。

EnumSet 核心特性

  • 所有元素必須來自單一枚舉類型
  • 迭代順序與枚舉聲明順序一致
  • 不允許存儲 null 值
  • 內部使用位向量實現,性能極高

常用構造方法示例

package collection.lession5;

import java.util.Arrays;
import java.util.EnumSet;
import java.util.Set;

public class Lession5 {
    public static void main(String[] args) {
        // 1. 創建指定類型的空集合
        EnumSet<MyEnum> set = EnumSet.noneOf(MyEnum.class);
        set.add(MyEnum.RED);
        set.add(MyEnum.GREEN);
        set.add(MyEnum.BLUR);
        showSet(set);

        // 2. 創建包含所有枚舉值的集合
        EnumSet<MyEnum> set2 = EnumSet.allOf(MyEnum.class);
        showSet(set2);

        // 3. 創建指定初始元素的集合
        EnumSet<MyEnum> set3 = EnumSet.of(MyEnum.GREEN, MyEnum.RED, MyEnum.WHITE);
        showSet(set3);

        // 4. 創建指定範圍的集合(包含邊界)
        EnumSet<MyEnum> set4 = EnumSet.range(MyEnum.RED, MyEnum.YELLOW);
        showSet(set4);
    }

    private static void showSet(Set set) {
        System.out.println(Arrays.toString(set.toArray()));
    }
}

enum MyEnum {
    BLACK, WHITE, RED, BLUR, GREEN, YELLOW
}

進階測試建議

  1. 嘗試使用 copyOf(Collection<E> c) 和 complementOf(EnumSet<E> s) 方法
  2. 測試 EnumSet.of 是否允許重複值,觀察編譯或運行時行為
  3. 測試 EnumSet.range 起點大於終點的情況(會拋出 IllegalArgumentException)

異常處理示例

當 range 起點大於終點時:

Exception in thread "main" java.lang.IllegalArgumentException: RED > BLACK

總結

EnumSet 是處理枚舉類型集合的最佳選擇,具有類型安全、高性能、代碼簡潔等優勢。雖然日常開發中較少直接使用枚舉,但在狀態機、權限控制、配置選項等場景中非常實用。

EnumSet 示例圖解
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved