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());来创建一个集合。
浙公网安备 33010602011771号