EnumSet集合

package frank;
import java.lang.*;
import java.util.EnumSet;
import java.util.HashSet;
import java.util.Collection;

/**
 *  EnumSet枚举集合,里面值必须是枚举类型,里面元素顺序根据枚举定义顺序排列
 * */
public class App
{
	public static void main(String[] args)throws Exception
	{
		//创建一个集合,集合元素就是Season枚举里面的所有枚举值
		EnumSet es1 = EnumSet.allOf(Season.class);
		System.out.println(es1);
		//创建一个元素为空的对象
		EnumSet es2 = EnumSet.noneOf(Season.class);
		System.out.println(es2);
		es2.add(Season.WINTER);//添加元素
		es2.add(Season.SPRING);
		System.out.println(es2);
		//创建一个对象,集合元素是指定的同类枚举值
		EnumSet es3 = EnumSet.of(Season.WINTER,Season.SUMMER);
		System.out.println(es3);
		//创建一个对象,元素是包含第一个参数到第二个参数范围的枚举值
		EnumSet es4 = EnumSet.range(Season.SPRING,Season.FALL);
		System.out.println(es4);
		//创建一个集合,元素和es4相同类型,但是元素不在es4中的
		EnumSet es5 = EnumSet.complementOf(es4);
		System.out.println(es5);
		Collection c = new HashSet();
		c.add(Season.SPRING);
		c.add(Season.FALL);
		EnumSet es6 = EnumSet.copyOf(c);//从c中复制元素来创建一个新的对象,所有值必须是同一个枚举的值
		System.out.println(es6);
		c.add("1");
		es6 = EnumSet.copyOf(c);//将会异常,因为c里面有非枚举里面的值
		System.out.println(es6);
	}
}
enum Season
{
	SPRING,
	SUMMER,
	FALL,
	WINTER;
}

  HashSet,EnumSet,TreeSet都是Set的实现类,性能最好的是EnumSet,其二是HashSet,其次是TreeSet,但是他们每个功能不一样,根据需求去选择,如果要多个线程访问一个集合,使用Collcetions里面的synchronizedSortedSet(new TreeSet());来创建一个集合。

posted on 2013-10-21 14:18  wp456  阅读(427)  评论(0)    收藏  举报

导航