程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> JAVA提高教程(5)-認識Set集合之EnumSet

JAVA提高教程(5)-認識Set集合之EnumSet

編輯:關於JAVA

這個類是1.5開始有的,目前個人使用量幾乎為零,因為我很少使用枚舉,呵呵。我這 裡也是簡單介紹一下而已。其使用方式和普通的Set沒有區別,只是構造方法有一些特殊 的而已。

1.package collection.lession5;
2.
3.import java.util.Arrays;
4.import java.util.EnumSet;
5.import java.util.Set;
6.
7./**
8. * 老紫竹JAVA提高教程(5)-認識Set集合之EnumSet。<br>
9. * 枚舉 set 中所有鍵都必須來自單個枚舉類型<br>
10. * 該枚舉類型在創建 set 時顯式或隱式地指定<br>
11. * 迭代順序是聲明時的順序。<br>
12. * 不允許null數據。
13. *
14. * @author 老紫竹 JAVA世紀網(java2000.net)
15. *
16. */
17.public class Lession5 {
18.
19. /**
20. * @param args
21. */
22. public static void main(String[] args) {
23. // 創建一個指定類型的空的集合
24. EnumSet<MyEnum> set = EnumSet.noneOf(MyEnum.class);
25. set.add(MyEnum.RED);
26. set.add(MyEnum.GREEN);
27. set.add(MyEnum.BLUR);
28. showSet(set);
29.
30. // 創建指定類型的所有數據的集合
31. EnumSet<MyEnum> set2 = EnumSet.allOf(MyEnum.class);
32. showSet(set2);
33.
34. // 創建指定類型指定初始數據的集合
35. EnumSet<MyEnum> set3 = EnumSet.of(MyEnum.GREEN, MyEnum.RED, MyEnum.WHITE);
36. showSet(set3);
37.
38. // 創建指定類型,指定范圍的集合
39. // 包含邊界數據
40. EnumSet<MyEnum> set4 = EnumSet.range(MyEnum.RED, MyEnum.YELLOW);
41. showSet(set4);
42.
43. // 集合的用法和普通的沒有區別
44. }
45.
46. /**
47. * 顯示Set裡面的數據。
48. *
49. * @param set
50. */
51. private static void showSet(Set set) {
52. System.out.println(Arrays.toString(set.toArray()));
53. }
54.}
55.
56.enum MyEnum {
57. BLACK, WHITE, RED, BLUR, GREEN, YELLOW
58.}

測試:

1 自己書寫 copyOf(Collection<E> c) 和 complementOf(EnumSet<E> s) 的使用方式

2 測試在EnumSet.of 是否允許有重復值,是編譯報錯還是運行報錯

3 測試 EnumSet.range 是否起點大於終點,也就是反向的range,看編譯錯誤還是運 行錯誤

總結

如果我們要用到對枚舉類型的集合處理,這個當然是很好的選擇。可惜我自己目前還 用不到,以後在項目裡,根據情況再確定吧。

如果range起點大於重點,出現如下的異常信息:

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved