????EnumSet??Java?????????????????Java???????SortedSet??TreeSet??HashSet??????????λ???????EnumSet<T>??????????EnumSet????????????????????EnumSet???????????????????о??????????????????????EnumSet???????
?????????????????????????????EnumSet??????50??????T0??T49????50?????????????HashSet??EnumSet???У?????????????50?????????????????????????????????????????е???????趨???????????HashSet??????????????EnumSet???????????????????????壬??????????50???????????????HashSet???9ms??EnumSet???4ms????????????????????EnumSet??HashSet??????????????ο?????????????????????????????????????????
public class EnumSetTest{
private static EnumTest[] enumTestArr = EnumTest.values();
public static void main(String[] args) {
Set set = new HashSet<EnumTest>();
int i = 0;
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
System.out.println("HashSet...Begin " + df.format(new Date()));
while (i <= 1000) {
addEnumerate(set);
removeEnumerate(set);
i++;
}
System.out.println("HashSet...End  " + df.format(new Date()));
EnumSet<EnumTest> enumSet = EnumSet.noneOf(EnumTest.class);
i = 0;
System.out.println("EnumSet...Begin " + df.format(new Date()));
while (i <= 1000) {
addEnumerate(enumSet);
removeEnumerate(enumSet);
i++;
}
System.out.println("EnumSet...End " + df.format(new Date()));
}
/*
* HashSet...Begin 2015-01-03 21:11:51.579
* HashSet...End  2015-01-03 21:11:51.588
* EnumSet...Begin 2015-01-03 21:11:51.589
* EnumSet...End 2015-01-03 21:11:51.593
* */
private static void addEnumerate(Set set) {
for (EnumTest t : enumTestArr) {
set.add(t);
}
}
private static void removeEnumerate(Set set) {
for (EnumTest t : enumTestArr) {
set.remove(t);
}
}
}
?????????EnumSet???????EnumSet????????????????β??????????EnumSet?????RegularEnumSet??RegularEnumSet add????????????£?
????public boolean add(E e) {
????typeCheck(e);
????long oldElements = elements;
????elements |= (1L << ((Enum)e).ordinal());
????return elements != oldElements;