<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # Java `EnumSet` > 原文: [https://www.programiz.com/java-programming/enumset](https://www.programiz.com/java-programming/enumset) #### 在本教程中,我們將借助示例學習 Java `EnumSet`類及其各種方法。 Java 集合框架的`EnumSet`類提供了單個枚舉的元素的一組實現。 在學習`EnumSet`之前,請確保了解 [Java 枚舉](/java-programming/enums "Java enum")。 它實現了[`Set`接口](/java-programming/set "Java Set Interface")。 ![Java EnumSet class implements the Java Set interface.](https://img.kancloud.cn/bd/4c/bd4cb5008a0be07c995352b3286a04d8_376x558.png) * * * ## 創建`EnumSet` 為了創建一個枚舉集,我們必須首先導入`java.util.EnumSet`包。 與其他集合實現不同,枚舉集合沒有公共構造器。 我們必須使用預定義的方法來創建一個枚舉集。 ### 1.使用`allOf(Size)` `allof()`方法創建一個枚舉集,其中包含指定枚舉類型`size`的所有值。 例如, ```java import java.util.EnumSet; class Main { // an enum named Size enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE } public static void main(String[] args) { // Creating an EnumSet using allOf() EnumSet<Size> sizes = EnumSet.allOf(Size.class); System.out.println("EnumSet: " + sizes); } } ``` **輸出** ```java EnumSet: [SMALL, MEDIUM, LARGE, EXTRALARGE] ``` 注意聲明, ```java EnumSet<Size> sizes = EnumSet.allOf(Size.class); ``` 在這里,`Size.class`表示我們創建的`Size`枚舉。 * * * ### 2.使用`noneOf(Size)` `noneOf()`方法創建一個空的枚舉集。 例如, ```java import java.util.EnumSet; class Main { // an enum type Size enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE } public static void main(String[] args) { // Creating an EnumSet using noneOf() EnumSet<Size> sizes = EnumSet.noneOf(Size.class); System.out.println("Empty EnumSet: " + sizes); } } ``` **輸出**: ```java Empty EnumSet : [] ``` 在這里,我們創建了一個空的枚舉,名稱為`sizes`。 **注意**:在上述程序中,我們只能插入枚舉類型為`sizes`的元素。 這是因為我們使用`size`枚舉創建了空的枚舉集。 * * * ### 3.使用`range(e1, e2)`方法 `range()`方法創建一個枚舉集,其中包含`e1`和`e2`之間的枚舉的所有值,包括兩個值。 例如, ```java import java.util.EnumSet; class Main { enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE } public static void main(String[] args) { // Creating an EnumSet using range() EnumSet<Size> sizes = EnumSet.range(Size.MEDIUM, Size.EXTRALARGE); System.out.println("EnumSet: " + sizes); } } ``` **輸出**: ```java EnumSet: [MEDIUM, LARGE, EXTRALARGE] ``` * * * ### 4.使用`of()`方法 `of()`方法創建一個包含指定元素的枚舉集。 例如, ```java import java.util.EnumSet; class Main { enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE } public static void main(String[] args) { // Using of() with a single parameter EnumSet<Size> sizes1 = EnumSet.of(Size.MEDIUM); System.out.println("EnumSet1: " + sizes1); EnumSet<Size> sizes2 = EnumSet.of(Size.SMALL, Size.LARGE); System.out.println("EnumSet2: " + sizes2); } } ``` **輸出**: ```java EnumSet1: [MEDIUM] EnumSet2: [SMALL, LARGE] ``` * * * ## `EnumSet`的方法 `EnumSet`類提供了使我們能夠對枚舉集執行各種元素的方法。 * * * ## 將元素插入`EnumSet` * `add()` - 將指定的枚舉值插入到枚舉集中 * `addAll()`將指定集合的??所有元素插入集合 例如, ```java import java.util.EnumSet; class Main { enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE } public static void main(String[] args) { // Creating an EnumSet using allOf() EnumSet<Size> sizes1 = EnumSet.allOf(Size.class); // Creating an EnumSet using noneOf() EnumSet<Size> sizes2 = EnumSet.noneOf(Size.class); // Using add method sizes2.add(Size.MEDIUM); System.out.println("EnumSet Using add(): " + sizes2); // Using addAll() method sizes2.addAll(sizes1); System.out.println("EnumSet Using addAll(): " + sizes2); } } ``` **輸出**: ```java EnumSet using add(): [MEDIUM] EnumSet using addAll(): [SMALL, MEDIUM, LARGE, EXTRALARGE] ``` 在上面的示例中,我們使用`addAll()`方法將枚舉集`size1`的所有元素插入到枚舉集`size2`中。 還可以使用`addAll()`將其他集合中的元素(例如`ArrayList`,`LinkedList`等)插入到枚舉集中。 但是,所有集合都應具有相同的枚舉類型。 * * * ## 訪問`EnumSet`元素 要訪問枚舉集的元素,我們可以使用`iterator()`方法。 為了使用此方法,我們必須導入`java.util.Iterator`包。 例如, ```java import java.util.EnumSet; import java.util.Iterator; class Main { enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE } public static void main(String[] args) { // Creating an EnumSet using allOf() EnumSet<Size> sizes = EnumSet.allOf(Size.class); Iterator<Size> iterate = sizes.iterator(); System.out.print("EnumSet: "); while(iterate.hasNext()) { System.out.print(iterate.next()); System.out.print(", "); } } } ``` **輸出**: ```java EnumSet: SMALL, MEDIUM, LARGE, EXTRALARGE, ``` **注意**: * 如果枚舉集中存在下一個元素,則`hasNext()`返回`true` * `next()`返回枚舉集中的下一個元素 * * * ## 刪除`EnumSet`元素 * `remove()` - 從枚舉集中刪除指定的元素 * `removeAll()` - 從枚舉集中刪除所有元素 例如: ```java import java.util.EnumSet; class Main { enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE } public static void main(String[] args) { // Creating EnumSet using allOf() EnumSet<Size> sizes = EnumSet.allOf(Size.class); System.out.println("EnumSet: " + sizes); // Using remove() boolean value1 = sizes.remove(Size.MEDIUM); System.out.println("Is MEDIUM removed? " + value1); // Using removeAll() boolean value2 = sizes.removeAll(sizes); System.out.println("Are all elements removed? " + value2); } } ``` **輸出**: ```java EnumSet: [SMALL, MEDIUM, LARGE, EXTRALARGE] Is MEDIUM removed? true Are all elements removed? true ``` * * * ## 其他方法 | 方法 | 描述 | | --- | --- | | `copyOf()` | 創建`EnumSet`的副本 | | `contains()` | 在`EnumSet`中搜索指定的元素,并返回布爾結果 | | `isEmpty()` | 檢查`EnumSet`是否為空 | | `size()` | 返回`EnumSet`的大小 | | `clear()` | 從`EnumSet`中刪除所有元素 | * * * ## `Cloneable`和`Serializable`接口 `EnumSet`類還實現`Cloneable`和`Serializable`接口。 **`Cloneable`的接口** 它允許`EnumSet`類制作該類實例的副本。 **`Serializable`接口** 每當需要通過網絡傳輸 Java 對象時,就需要將對象轉換為位或字節。 這是因為 Java 對象無法通過網絡傳輸。 `Serializable`接口允許對類進行序列化。 這意味著可以將實現`Serializable`的類的對象轉換為位或字節。 * * * ## 為什么選擇`EnumSet`? 與其他集合實現(例如`HashSet`,`TreeSet`)相比,`EnumSet`提供了一種存儲枚舉值的有效方法。 枚舉集僅存儲特定枚舉的枚舉值。 因此,JVM 已經知道該集合的所有可能值。 這就是為什么枚舉集在內部被實現為一系列位的原因。 位指定元素是否存在于枚舉集中。 如果集合中存在該元素,則將其對應的位打開。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看