日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java集合之EnumSet

發布時間:2023/12/3 java 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java集合之EnumSet 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自??Java集合之EnumSet

?

EnumSet

EnumSet 是一個專為枚舉設計的集合類,EnumSet中的所有元素都必須是指定枚舉類型的枚舉值,該枚舉類型在創建EnumSet時顯式或隱式地指定。

  • EnumSet的集合元素也是有序的,EnumSet以枚舉值在Enum類內的定義順序來決定集合元素的順序。
  • EnumSet在內部以位向量的形式存儲,這種存儲形式非常緊湊、高效,因此EnumSet對象占用內存很小,而且運行效率很好。尤其是進行批量操作(如調用containsAll()和retainAll()方法)時,如果其參數也是EnumSet集合,則該批量操作的執行速度也非常快。
  • EnumSet集合不允許加入null元素,如果試圖插入null元素,EnumSet將拋出NullPointerException異常。
  • EnumSet類沒有暴露任何構造器來創建該類的實例,程序應該通過它提供的類方法來創建EnumSet對象。
  • 如果只是想判斷EnumSet是否包含null元素或試圖刪除null元素都不會拋出異常,只是刪除操作將返回false,因為沒有任何null元素被刪除。
  • 方法介紹:

    • EnumSet allOf(Class elementType): 創建一個包含指定枚舉類里所有枚舉值的EnumSet集合。
    • EnumSet complementOf(EnumSet e): 創建一個其元素類型與指定EnumSet里元素類型相同的EnumSet集合,新EnumSet集合包含原EnumSet集合所不包含的、此類枚舉類剩下的枚舉值(即新EnumSet集合和原EnumSet集合的集合元素加起來是該枚舉類的所有枚舉值)。
    • EnumSet copyOf(Collection c): 使用一個普通集合來創建EnumSet集合。
    • EnumSet copyOf(EnumSet e): 創建一個指定EnumSet具有相同元素類型、相同集合元素的EnumSet集合。
    • EnumSet noneOf(Class elementType): 創建一個元素類型為指定枚舉類型的空EnumSet。
    • EnumSet of(E first,E…rest): 創建一個包含一個或多個枚舉值的EnumSet集合,傳入的多個枚舉值必須屬于同一個枚舉類。
    • EnumSet range(E from,E to): 創建一個包含從from枚舉值到to枚舉值范圍內所有枚舉值的EnumSet集合。

    示例代碼:

    package com.collection;import java.util.EnumSet;public class EnumSetTest {public static void main(String[] args) {//1.創建一個包含Session(枚舉類)里所有枚舉值的EnumSet集合EnumSet e1 = EnumSet.allOf(Session.class);System.out.println(e1);//[SPRING, SUMMER, FAIL, WINTER]//2.創建一個空EnumSetEnumSet e2 = EnumSet.noneOf(Session.class);System.out.println(e2);//[]//3. add()空EnumSet集合中添加枚舉元素e2.add(Session.SPRING);e2.add(Session.SUMMER);System.out.println(e2);//[SPRING, SUMMER]//4. 以指定枚舉值創建EnumSet集合EnumSet e3 = EnumSet.of(Session.SPRING,Session.FAIL);System.out.println(e3);//[SPRING, FAIL]//5.創建一個包含從from枚舉值到to枚舉值范圍內所有枚舉值的EnumSet集合。EnumSet e4 = EnumSet.range(Session.SPRING,Session.FAIL);System.out.println(e4);//[SPRING, SUMMER, FAIL]//6.創建一個其元素類型與指定EnumSet里元素類型相同的EnumSet集合,// 新EnumSet集合包含原EnumSet集合所不包含的枚舉值EnumSet e5 = EnumSet.complementOf(e4);System.out.println(e5);//[WINTER]} }//創建一個枚舉 enum Session{SPRING,SUMMER,FAIL,WINTER }

    注意:

    除此之外還可以復制另一個EnumSet集合中的所有元素來創建新的EnumSet集合,或者復制另一個Collection集合中的所有元素來創建新的EnumSet集合。

    示例:

    Collection c = new HashSet();c.clear();c.add(Session.SPRING);c.add(Session.FAIL);EnumSet e6 = EnumSet.copyOf(c);System.out.println(e6);//[SPRING, FAIL]

    注意:當復制Collection集合中所有元素來創建新的EnumSet集合時,要求Collection集合中的所有元素必須是同一個枚舉類的枚舉值。

    錯誤示例:

    c.add("Java");e6 = EnumSet.copyOf(c);//java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Enum

    Things won are done; joy’s soul lies in the doing.?
    得到即是完結,快樂的精髓在于過程。

    ?

    總結

    以上是生活随笔為你收集整理的Java集合之EnumSet的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。