Java枚举(二)

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

5.Java类集对枚举的支持——EnumMap、EnumSet

5.1  EnumMap

EnumMap是Map接口的子类,所以本身还是以Map的形式进行操作,即Key------->value的形式,如果要使用EnumMap,首先要创建EnumMap的对象,在创建此对象时必须要指定要操作的枚举类型。

package enumTest;

import java.util.EnumMap;
import java.util.Map;

public class EnumMapDemo {
	enum Color {
		RED, BLUE, YELLOW;
	}

	public static void main(String[] args) {
		Map<Color, String> mp = null;
		mp = new EnumMap<Color, String>(Color.class);
		// 将指定的值与指定的键关联,key是关联的键,value是关联的值
		mp.put(Color.BLUE, "蓝色");
		mp.put(Color.RED, "红色");
		mp.put(Color.YELLOW, "黄色");
		System.out.println("=====输出全部内容=====");
		for (Color c : Color.values()) {
			System.out.println(c.ordinal() + "--->" + c.name());
			System.out.println(c.name() + "--->" + mp.get(c));//get()方法返回指定键所映射的值,如果没有映射返回null
		}
		System.out.println();
		System.out.println("======输出全部键======");
		for(Color c:mp.keySet()){
			System.out.println(c.name()+"、");
		}
		System.out.println("======输出全部值=======");
		for(String s: mp.values()){
			System.out.println(s+"、");
		}
	}

}
5.2 EnumSet

EnumSet是Set接口,所以里面的内容是无法重复的,使用EnumSet时不能使用new关键字进行实例化,所以在此类中有很多静态方法。

package enumTest;

import java.util.EnumSet;

public class EnumSetDemo {
	enum Color {
		RED, BLUE, YELLOW;
	}

	public static void main(String[] args) {
		EnumSet<Color> es = null;
		// 将枚举中的所有文件获取到集合中
		es = EnumSet.allOf(Color.class);
		print(es);
		System.out.println();
		// 设置一个指定到集合中
		EnumSet<Color> es1 = null;
		es1 = EnumSet.of(Color.BLUE);
		print(es1);
		System.out.println();
		// 创建可以加入指定类型的对象,创建一个具有指定内容的set
		EnumSet<Color> es2 = null;
		es2 = EnumSet.noneOf(Color.class);
		es2.add(Color.RED);
		es2.add(Color.YELLOW);
		print(es2);
		System.out.println();
		// 创建不包含指定内容的Set
		EnumSet<Color> es3 = null;
		es3 = EnumSet.complementOf(es2);
		print(es3);
		System.out.println();
		// 复制包含指定内容的Set
		EnumSet<Color> es4 = null;
		es4 = EnumSet.copyOf(es2);
		print(es4);

	}

	private static void print(EnumSet<Color> temp) {
		for (Color c : temp) {
			System.out.println(c + "、");
		}
	}

}
6. 让枚举实现一个接口

package enumTest;

public class InterfaceEnumDemo {
	enum Color implements InterfaceEnum {
		RED {
			@Override
			public String getColors() {
				return "红色";
			}
		},
		BLUE {
			@Override
			public String getColors() {
				return "蓝色";
			}
		},
		YELLOW {
			@Override
			public String getColors() {
				return "黄色";
			}
		};

	}

	public static void main(String[] args) {
		for (Color c : Color.values()) {
			System.out.println(c.getColors() + "、");
		}
	}
}

interface InterfaceEnum {
	String getColors();
}

因为接口中会存在抽象方法,所以,枚举中的每个对象都必须实现此抽象方法。




---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值