EnumSetのいくつかの例

4194 ワード

EnumSet 列挙タイプとともに使用される専用です Set 実現する.列挙set内のすべての要素は、単一の列挙タイプ(すなわち、同じタイプであり、そのタイプがEnumのサブクラスである必要がある)から来なければならない. 列挙タイプが作成されています set に表示されます.列挙 set 内部ではビットベクトルとして表されます. この表現は非常にコンパクトで効率的です.このような空間的および時間的パフォーマンスは、従来のベースとして使用するのに十分であるべきである. int の「ビットマーク」の置き換え形式は、高品質でタイプが安全な利点があります.
Enumset
虚クラスであり,我々はそれが提供する静的方法でしか返すことができない.
Enumset
を使用してインポートしたストロークVSラム速度のデータ点を示します.
EnumSetの2つの異なる実装を返します
:EnumSetサイズが64未満の場合、
RegularEnumSetインスタンス(もちろんEnumSetから継承されています)を返します.このEnumSetは実際にはlongを使用してこのEnumSetを格納します.
EnumSetサイズが64以上の場合は、long[]を使用して格納されるJumboEnumSetインスタンスを返します.このようなメリットは明らかです. ほとんどの場合に返されるRegularEnumSetの効率はJumboEnumSetよりずっと高い.(以下より抜粋:
http://blog.csdn.net/hudashi/article/details/6943843 )
 
 
この文書では、EnumSetの使用例をいくつか示します.
EnumSetをテストするには、まず2つの後に列挙クラスを定義します. Season とMonth
ヘルプ enum Season {      SPRING, SUMMER, AUTUMN, WINTER; } enum Month {      JANUARY, FEBRUARY, MARCH, APRIL, MAY, JUNE, JULY, AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER; }NoneOfメソッドを使用して空のEnumSetを作成
ヘルプ // EnumSet          Set<Season> emptyEnumSet = EnumSet.noneOf(Season. class );          System.out.println(emptyEnumSet); // []
EnumSet.allOfメソッドを使用して、すべての列挙クラス要素を持つEnumSetを作成します.
ヘルプ Set<Season> enumSet = EnumSet.allOf(Season. class );          System.out.println(enumSet); // [SPRING, SUMMER, AUTUMN, WINTER]
EnumSet.ofメソッドを使用して、要素の一部を持つEnumSetを返します.
次の例では、月の列挙類から夏、冬に所有する月からなるEnumSetを得ます.
ヘルプ Set<Month> summer = EnumSet.of(Month.APRIL, Month.MAY, Month.JUNE);          System.out.println(summer); // [APRIL, MAY, JUNE]
          Set<Month> winter = EnumSet.of(Month.OCTOBER, Month.NOVEMBER,                  Month.DECEMBER);
          System.out.println(winter); // [OCTOBER, NOVEMBER, DECEMBER]
addAllメソッドを使用して、1つのEnumSetのすべての要素を別のEnumSetに追加します.
ヘルプ emptyEnumSet.addAll(enumSet);          System.out.println(emptyEnumSet); // [SPRING, SUMMER, AUTUMN, WINTER]
toArrayメソッドを使用して、EnumSetの要素を配列に格納します.
ヘルプ // EnumSet          Season[] seasons = new Season[enumSet.size()];          enumSet.toArray(seasons);          System.out.println(Arrays.deepToString(seasons)); // [SPRING, SUMMER,                                                              // AUTUMN, WINTER]
原文アドレスhttp://thecodesample.com/?p=583
その他の例は  http://thecodesample.com/