iT邦幫忙

DAY 17
1

java菜鳥的學習筆記系列 第 17

使用Enum以及EnumSet in Java

  • 分享至 

  • xImage
  •  

今天分享使用Enum這個應該大家都會用的型態(應該從C就有了吧!?),今天恰好工作上要把常用的靜態code常做常數使用,當然Enum是很好的選擇啦,java也提供加強版的EnumSet,把enum當作Collection來用,沒有疑問的也支援泛型,當然也支援個人有幾個EnumSet的方法挺好用的,以下分享今日程式。

import java.util.EnumSet;
import java.util.Iterator;


public class EnumTest {
	public enum Code{
		UR, DR, DW, DO, FR, FW, FO, CR, CW, CO, IO, IW, II, IT, IC, WD, WC, WP //工作上用到的常數
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		for(Code c : Code.values()){ //將每個值讀出
			System.out.println(c+":Index:"+c.ordinal());// ordinal應該也可以稱做index 
		}
		EnumSet<Code> cs= EnumSet.range(Code.IO, Code.IC); //range方法可以取某一段的值
		
		EnumSet<Code> cs2=EnumSet.complementOf(EnumSet.range(Code.DR, Code.WP));//complementof方法是取complement
		                                                                        //刪除掉某些值後的set,要傳入EnumSet
		
		EnumSet<Code> cs3=EnumSet.of(Code.FR, Code.CR, Code.DR); //of方法可以指定那些值要存到set裡
		
		Iterator<Code> i=cs.iterator(); //建立Iterator物件,好用來取值											

		Iterator<Code> k=cs2.iterator();
		
		Iterator<Code> j=cs3.iterator();
		
		System.out.println("只取出IO到IC這段的值");
		while(i.hasNext()){
			System.out.println(i.next());
		}
		System.out.println("取出除了DR到WP以外的值");
		while(k.hasNext()){
			System.out.println(k.next());//當然只有UR囉!
		}
		System.out.println("特別挑出特定值");
		while(j.hasNext()){
			System.out.println(j.next());
		}
	}
	
	
	

}

Output:

UR:Index:0
DR:Index:1
DW:Index:2
DO:Index:3
FR:Index:4
FW:Index:5
FO:Index:6
CR:Index:7
CW:Index:8
CO:Index:9
IO:Index:10
IW:Index:11
II:Index:12
IT:Index:13
IC:Index:14
WD:Index:15
WC:Index:16
WP:Index:17
只取出IO到IC這段的值
IO
IW
II
IT
IC
取出除了DR到WP以外的值
UR
特別挑出特定值
DR
FR
CR


上一篇
使用Apache POI API讀取Excel資料
下一篇
使用SeekabnlerByteChannel in java
系列文
java菜鳥的學習筆記28
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言