Java : EnumSet (列挙型のセット) - API使用例
EnumSet (Java SE 23 & JDK 23) の使い方まとめです。
ほとんどのメソッドにサンプルコードがあります。
APIドキュメントのおともにどうぞ。
概要
列挙型と一緒に使用するための特殊なSet実装です。 enumセット内の要素はすべて、セットの作成時に、指定された単一のenum型から明示的または暗黙的に生成される必要があります。
EnumSet クラスは、列挙型(Enum) を要素とする Set の実装です。
final var set = EnumSet.of(
DayOfWeek.MONDAY, DayOfWeek.TUESDAY, DayOfWeek.WEDNESDAY);
System.out.println(set); // [MONDAY, TUESDAY, WEDNESDAY]
System.out.println(set.size()); // 3
System.out.println(set.contains(DayOfWeek.MONDAY)); // true
System.out.println(set.contains(DayOfWeek.TUESDAY)); // true
System.out.println(set.contains(DayOfWeek.SUNDAY)); // false
メソッド
static <E extends Enum<E>> EnumSet<E> allOf (Class<E> elementType)
指定された要素型のすべての要素を含むenumセットを作成します。
final var set = EnumSet.allOf(DayOfWeek.class);
// [MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY]
System.out.println(set);
EnumSet<E> clone ()
このセットのコピーを返します。
final var set = EnumSet.of(
DayOfWeek.MONDAY, DayOfWeek.TUESDAY, DayOfWeek.WEDNESDAY);
System.out.println(set); // [MONDAY, TUESDAY, WEDNESDAY]
final var cloned = set.clone();
System.out.println(cloned); // [MONDAY, TUESDAY, WEDNESDAY]
static <E extends Enum<E>> EnumSet<E> complementOf (EnumSet<E> s)
指定されたenumセットと同じ要素型を使用してenumセットを作成します。最初は、指定されたセットに含まれないこの型の要素がすべて含められます。
final var src = EnumSet.of(
DayOfWeek.MONDAY, DayOfWeek.TUESDAY, DayOfWeek.WEDNESDAY);
System.out.println(src); // [MONDAY, TUESDAY, WEDNESDAY]
final var set = EnumSet.complementOf(src);
System.out.println(set); // [THURSDAY, FRIDAY, SATURDAY, SUNDAY]
static <E extends Enum<E>> EnumSet<E> copyOf (Collection<E> c)
指定されたコレクションから初期化されたenumセットを作成します。
final Collection<DayOfWeek> c = List.of(
DayOfWeek.MONDAY, DayOfWeek.TUESDAY, DayOfWeek.WEDNESDAY);
System.out.println(c); // [MONDAY, TUESDAY, WEDNESDAY]
final var set = EnumSet.copyOf(c);
System.out.println(set); // [MONDAY, TUESDAY, WEDNESDAY]
static <E extends Enum<E>> EnumSet<E> copyOf (EnumSet<E> s)
指定されたenumセットと同じ要素型を使用して、enumセットを作成します。最初は、同じ要素を含むenumセットを作成します(同じ要素が存在する場合)。
final var s = EnumSet.of(
DayOfWeek.MONDAY, DayOfWeek.TUESDAY, DayOfWeek.WEDNESDAY);
System.out.println(s); // [MONDAY, TUESDAY, WEDNESDAY]
final var set = EnumSet.copyOf(s);
System.out.println(set); // [MONDAY, TUESDAY, WEDNESDAY]
static <E extends Enum<E>> EnumSet<E> noneOf (Class<E> elementType)
指定された要素型を使用して空のenumセットを作成します。
final var set = EnumSet.noneOf(DayOfWeek.class);
System.out.println(set); // []
System.out.println(set.isEmpty()); // true
set.add(DayOfWeek.MONDAY);
System.out.println(set); // [MONDAY]
System.out.println(set.size()); // 1
set.add(DayOfWeek.TUESDAY);
System.out.println(set); // [MONDAY, TUESDAY]
System.out.println(set.size()); // 2
static <E extends Enum<E>> EnumSet<E> of (E e)
指定された要素を最初に含むenumセットを作成します。
final var set = EnumSet.of(DayOfWeek.MONDAY);
System.out.println(set); // [MONDAY]
System.out.println(set.size()); // 1
static <E extends Enum<E>> EnumSet<E> of (E e1, E e2)
指定された要素が最初に含まれるenumセットを作成します。
final var set = EnumSet.of(DayOfWeek.MONDAY, DayOfWeek.TUESDAY);
System.out.println(set); // [MONDAY, TUESDAY]
System.out.println(set.size()); // 2
static <E extends Enum<E>> EnumSet<E> of (E first, E... rest)
指定された要素が最初に含まれるenumセットを作成します。
final var set = EnumSet.of(
DayOfWeek.MONDAY, DayOfWeek.TUESDAY, DayOfWeek.WEDNESDAY,
DayOfWeek.THURSDAY, DayOfWeek.FRIDAY, DayOfWeek.SATURDAY);
System.out.println(set); // [MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY]
System.out.println(set.size()); // 6
static <E extends Enum<E>> EnumSet<E> of (E e1, E e2, E e3)
指定された要素が最初に含まれるenumセットを作成します。
final var set = EnumSet.of(
DayOfWeek.MONDAY, DayOfWeek.TUESDAY, DayOfWeek.WEDNESDAY);
System.out.println(set); // [MONDAY, TUESDAY, WEDNESDAY]
System.out.println(set.size()); // 3
static <E extends Enum<E>> EnumSet<E> of (E e1, E e2, E e3, E e4)
指定された要素が最初に含まれるenumセットを作成します。
final var set = EnumSet.of(
DayOfWeek.MONDAY, DayOfWeek.TUESDAY, DayOfWeek.WEDNESDAY,
DayOfWeek.THURSDAY);
System.out.println(set); // [MONDAY, TUESDAY, WEDNESDAY, THURSDAY]
System.out.println(set.size()); // 4
static <E extends Enum<E>> EnumSet<E> of (E e1, E e2, E e3, E e4, E e5)
指定された要素が最初に含まれるenumセットを作成します。
final var set = EnumSet.of(
DayOfWeek.MONDAY, DayOfWeek.TUESDAY, DayOfWeek.WEDNESDAY,
DayOfWeek.THURSDAY, DayOfWeek.FRIDAY);
System.out.println(set); // [MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY]
System.out.println(set.size()); // 5
static <E extends Enum<E>> EnumSet<E> range (E from, E to)
指定された2つの端点により定義される範囲内の要素すべてを最初に含むenumセットを作成します。
final var set = EnumSet.range(DayOfWeek.TUESDAY, DayOfWeek.FRIDAY);
System.out.println(set); // [TUESDAY, WEDNESDAY, THURSDAY, FRIDAY]
System.out.println(set.size()); // 4
AbstractSetで宣言されたメソッド
equals, hashCode, removeAll
「Java API 使用例 : AbstractSet」をご参照ください。
AbstractCollectionで宣言されたメソッド
add, addAll, clear, contains, containsAll, isEmpty, iterator, remove, retainAll, toArray, toArray, toString
「Java API 使用例 : AbstractCollection」をご参照ください。
Collectionで宣言されたメソッド
parallelStream, removeIf, stream, toArray
「Java API 使用例 : Collection」をご参照ください。
Iterableで宣言されたメソッド
forEach
「Java API 使用例 : Iterable」をご参照ください。
Setで宣言されたメソッド
add, addAll, clear, contains, containsAll, isEmpty, iterator, remove, retainAll, size, spliterator, toArray, toArray
「Java API 使用例 : Set」をご参照ください。
関連記事
- List(リスト)の基本
- Map(マップ)の基本
- Set(セット)の基本
- List の初期化方法いろいろ
- Map の初期化方法いろいろ
- Set の初期化方法いろいろ
- 配列 vs. List
- 配列からListへの変換
- List から配列への変換
- API 使用例
- Collection (コレクション)
- Collections (コレクション操作)
- Comparable
- Comparator
- Iterator
- List (リスト)
- Map (マップ)
- Map.Entry (キーと値のペア)
- Queue (キュー)
- AbstractQueue
- ArrayBlockingQueue (ブロッキング・配列キュー)
- ArrayDeque (両端キュー)
- BlockingDeque (ブロッキング・両端キュー)
- BlockingQueue (ブロッキング・キュー)
- ConcurrentLinkedDeque (並列処理用・両端キュー)
- ConcurrentLinkedQueue (並列処理用キュー)
- Deque (両端キュー)
- LinkedBlockingDeque (ブロッキング・リンク両端キュー)
- LinkedBlockingQueue (ブロッキング・リンクキュー)
- LinkedList (二重リンク・リスト)
- PriorityBlockingQueue (ブロッキング・優先度付きキュー)
- PriorityQueue (優先度付きキュー)
- RandomAccess
- Set (セット)
- Spliterator