EnumSet類也是有順序的,EnumSet按照枚舉值在Enum類內定義的順序決定集合元素的順序
EnumSet在內部已位向量的形式存儲,這種存儲方式非常緊湊、搞笑,因此EnumSet占用內存很小,而且運行效率很好。
EnumSet集合不允許加入null元素
EnumSet常用的方法:
1)、EnumSet allOf(Class elementType):創建一個包含指定枚舉類里所有枚舉值得EnumSet集合
2)、EnumSet complementOf(EnumSet s):創建一個氣元素類型和指定EnumSet元素類型相同的EnumSet集合,新的ENumSet集合包含原EnumSet集合所有不包含的元素。也就是新的EnumSet集合和指定的EnumSet集合元素相加即為該枚舉類里的所有元素
3)、EnumSet copyOf(Collection c):使用一個普通集合來創建EnumSet集合,要求Collection集合里都是枚舉元素,且類型都相同。否則會拋出ClassCastException異常
4)、EnumSet copyOf(EnumSet s):創建一個與指定EnumSet具有相同元素類型、相同集合元素的EnumSet集合
5)、EnumSet noneOf(Class elementType):創建一個元素類型為指定枚舉類型的空EnumSet
6)、EnumSet of(E first,E... rest):創建一個包含一個活多個枚舉值得EnumSet集合,傳人的多個枚舉值必須是屬于同一個枚舉類
7)、EnumSet range(E from,E to):創建一個包含從from枚舉值到to枚舉值范圍內所有枚舉值的EnumSet集合
下面是示范:
1 public class Test { 2 3 public static void main(String[] args) { 4 5 //創建一個EnumSet集合,集合元素就是Season枚舉類的全部枚舉值 6 EnumSet es=EnumSet.allOf(Season.class); 7 System.out.println(es); //輸出[SPRING, SUMMER, Fall, WINTER] 8 9 //創建一個EnumSet空集合,只頂其集合元素是Season類的枚舉值 10 EnumSet es2=EnumSet.noneOf(Season.class); 11 es2.add(Season.WINTER); 12 es2.add(Season.SPRING); 13 System.out.println(es2); //輸出[SPRING, WINTER] 14 15 //以枚舉值來創建EnumSet集合 16 EnumSet es3=EnumSet.of(Season.SUMMER,Season.WINTER); 17 System.out.println(es3); //輸出[SUMMER, WINTER] 18 19 //創建一個包含Season枚舉值從SUMMER到WINTER的EnumSet集合 20 EnumSet es4=EnumSet.range(Season.SUMMER, Season.WINTER); 21 System.out.println(es4);//輸出[SUMMER, Fall, WINTER] 22 23 //創建一個EnumSet集合,其元素和es4集合元素類型相同, es4元素+es5元素=Sesson枚舉的全部枚舉值 24 EnumSet es5=EnumSet.complementOf(es4); 25 System.out.println(es5);//輸出[SPRING] 26 } 27 } 28 29 enum Season{ 30 SPRING,SUMMER,Fall,WINTER; 31 }
?