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());来创建一个集合。