EnumSet的名稱說明了其作用,它是在J2SE
5.0後加入的新類別,可以協助您建立列舉值的集合,它提供了一系列的靜態方法,可以讓您指定不同的集合建立方式,例如:
package onlyfun.caterpillar; import java.util.*; enum FontConstant { Plain, Bold, Italic } public class EnumSetDemo { public static void main(String[] args) { EnumSet<FontConstant> enumSet = EnumSet.of(FontConstant.Plain, FontConstant.Bold); showEnumSet(enumSet); showEnumSet(EnumSet.complementOf(enumSet)); }
public static void showEnumSet( EnumSet<FontConstant> enumSet) { Iterator iterator = enumSet.iterator(); while(iterator.hasNext()) { System.out.print(iterator.next() + " "); } System.out.println(); } }
您可以指定列舉值來加入EnumSet中,of()方法會返回一個EnumSet的實例,當中包括您所指定的列舉值,您也可以使complementOf()指定一個EnumSet的互補集,以下是執行的結果:
EnumSet實作了Set介面,所以您可以使用Set介面的所有方法來測試它所包括的列舉值,例如測試一個集合中是否包括 FontConstant.Bold:
if(enumSet.contains(FontConstant.Bold)) {
....
}
您也可以建立一個空的EnumSet,然後自己逐個加入列舉值,例如:
package onlyfun.caterpillar; import java.util.*; enum FontConstant { Plain, Bold, Italic } public class EnumSetDemo { public static void main(String[] args) { EnumSet<FontConstant> enumSet = EnumSet.noneOf(FontConstant.class); enumSet.add(FontConstant.Bold); enumSet.add(FontConstant.Italic); showEnumSet(enumSet); } public static void showEnumSet( EnumSet<FontConstant> enumSet) { Iterator iterator = enumSet.iterator(); while(iterator.hasNext()) { System.out.print(iterator.next() + " "); } System.out.println(); } }
執行結果:
您也可以由一個容器物件中建立EnumSet:
List<FontConstant> list = new ArrayList<FontConstant>();
list.add(FontConstant.Bold);
list.add(FontConstant.Italic);
showEnumSet(EnumSet.copyOf(list));
更多EnumSet相關的方法,您可以參考 EnumSet 線上API文件。
|