枚举:集合对enum的支持,EnumSet,EnumMap

EnumSet类

定义:set接口的子类,所以内容无法重复,在使用EnumSet时不能直接使用new关键字为其实例化,所以此类中提供了很多静态方法。枚举 set 中所有键都必须来自单个枚举类型,该枚举类型在创建 set 时显式或隐式地指定。

public abstract class EnumSet<E extends Enum<E>> extends  AbstractSet<E> implements  Cloneable,  Serializable

AbstractSet:所有set类型集合的最大父类
Cloneable:合法的对所有实例进行克隆(按字段复制)
Serializable:实现此接口用来实现对象序列化和反序列化

常用方法:
.allOf()创建一个包括指定元素类型的所有元素枚举set;
.complementOf()创建一个指定set与指定枚举set相同的枚举set,最初不包含指定set中所不包含的所有类型元素;
.noneOf()创建一个指定元素类型的空的枚举类型set;

示例:

public enum Entity {
	
	white("白色",5),red("红色",4),black("黑色",3),blue("蓝色",2),green("绿色",1);
	
	private String name ;
	
	private int size ;
	
	Entity(String name , int size) {
		this.name = name;
		this.size = size ;
	}
	
	public void setName(String name) {
		this.name  = name;
	}
	
	public String getName() {
		return name ;
	}
	
	public void setSize(int size) {
		this.size = size ;
	}
	
	public int getSize() {
		return size ;
	}

}

public class EnumSetExample {
	
	public static void main(String[] args) {
		
		EnumSet<Entity> enumset = EnumSet.allOf(Entity.class);
		System.out.println(enumset);
		System.out.println("------------------------");
		EnumSet<Entity> enumSet2 = EnumSet.noneOf(Entity.class);
		enumSet2.add(Entity.white);
		System.out.println(enumSet2);
		System.out.println("------------------------");

		EnumSet<Entity> enumSet3 = EnumSet.complementOf(enumSet2);
		System.out.println(enumSet3);
		
	}

}

运行结果:
[white, red, black, blue, green]
------------------------
[white]
------------------------
[red, black, blue, green]

EnumMap类

定义:与枚举类型键一起使用的专用Map实现,枚举映射中所有的键都必须来自枚举类型,值可以自由定义。


public class EnumMap<K extends Enum<K>,V> extends AbstractMap<K,V> implements Serializable,  Cloneable
AbstractMap:所有Map类型集合的最大父类


示例:
public class EntityMapExample {
	public static void main(String[] args) {
		EnumMap<Entity, String> enumMap = new EnumMap<>(Entity.class);
		for (Entity entity : Entity.values()) {
			enumMap.put(entity,entity.getName());
		}
		System.out.println(enumMap);//直接打印集合
		System.out.println("--------------------------");
		System.out.println("分别取得Key/Value:");
		Set<Map.Entry<Entity, String>> set = enumMap.entrySet();
		Iterator<Map.Entry<Entity, String >> iterator = set.iterator() ;
		while (iterator.hasNext()) {
			Map.Entry<Entity, String> me = iterator.next();
			System.out.println(me.getKey()+"="+me.getValue());//以迭代器循环的方式分别取得键值对
		}
	}
}
运行结果:
{white=白色, red=红色, black=黑色, blue=蓝色, green=绿色}
--------------------------
分别取得Key/Value:
white=白色
red=红色
black=黑色
blue=蓝色
green=绿色







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值