Javaの列挙型セット

WBOY
WBOYオリジナル
2024-08-30 15:15:44629ブラウズ

列挙セットはセットインターフェイスの実装であり、列挙型用に Java の Abstract クラスを拡張します。 Set コレクションは、Java で列挙型を操作する機能を提供します。 Enum セットは同期されません。したがって、要素へのアクセスが高速になります。 Enum セットでは null 要素を追加できません。 null 値を追加しようとすると、null ポインタ例外がスローされます。

構文:

無料ソフトウェア開発コースを始めましょう

Web 開発、プログラミング言語、ソフトウェア テスト、その他

public abstract class EnumSet<E extends Enum<E>> || This is the class decralation of enum set.
EnumSet<E extends Enum<E>> enum1, enum2, enum3, enum4; || Declare different enum.

列挙型セットは同期されていないため、ほぼマスターですが、以下のコレクション クラスの synchronized Method() を使用して同期できます。同期の構文を見つけてください。

Collections.synchronizedSet(java.util.Set<T>)
Set<Enum_Type> s = Collections.synchronizedSet(EnumSet.noneOf(EnumClass.class));

Java の Enumset のメソッド

  • static > allOf(Class elementType): このメソッドは、言及されたすべての要素を含む列挙型を作成するために使用されます。
  • EnumSet clone(): このメソッドは、セットのコピーを作成するために使用されます。戻り値の型は EnumSet です。
  • static > complementOf(EnumSet s): このメソッドは、メソッドで指定された列挙セットを作成するために使用されます。この列挙には、セットに含まれていないすべての要素が含まれます。
  • static > copyOf(Collection c): これは、メソッドで指定された列挙セットのコピーを作成します。ただし、コレクションパラメータが必要です。
  • static > copyOf(EnumSet s): これにより、列挙型セットとして指定された列挙型が作成されます。これにより、EnumSet が返されます。
  • static > noneOf(Class elementType): これにより、メソッドで指定された列挙型も作成されます。 EnumSet を返します。
  • static > of(E e): また、初期要素を含む列挙型を作成します。戻り値の型は EnumSet です。
  • static > of(E first, E…rest): 要素を含む enum を作成し、EnumSet
  • を返します。
  • static > of(E e1, E e2): このメソッドは、言及された要素を含む列挙型を作成します。戻り値の型は EnumSet
  • です
  • static > of(E e1, E e2, E e3): このメソッドは列挙型を作成します。メソッドの戻り値の型は EnumSet です。 .
  • static > of(E e1, E e2, E e3, E e4): このメソッドは、指定された要素を含む列挙型も作成します。戻り値の型は EnumSet
  • です
  • static > of(E e1, E e2, E e3, E e4, E e5): このメソッドは、列挙型として渡される要素を指定して列挙型も作成します。戻り値の型は EnumSet
  • です
  • static > range(E from, E to): このメソッドでは範囲を指定できます。次に、新しい列挙型が作成されます。戻り値の型は EnumSet です。 .

注:

  • Enum セットはさまざまなクラスとインターフェイスを実装します。列挙型セットのクラス宣言:
  • パブリック抽象クラス EnumSet> AbstractSet を拡張します。クローン可能、シリアル化可能
  • を実装します

列挙セットによって実装されるインターフェイス:

  • 複製可能
  • セット
  • シリアル化可能
  • コレクション
  • 反復可能

列挙型セットによって拡張されるクラスは次のとおりです:

  • 抽象セット

Java での Enumset の例

次に enumset の例を示します:

例 #1

以下の例では、列挙型セットに要素を追加しています。

コード:

import java.util.EnumSet;
public class EnumsetDemo {
public static void main(String[] args) {
// creating reference
EnumSet<EnumDemo> enum1;
// here we are adding elements to the enum1 which we create above.
enum1 = EnumSet.of(EnumDemo.JAVA, EnumDemo.JAVASCRIPT,
EnumDemo.C, EnumDemo.PHP, EnumDemo.GO, EnumDemo.PYTHON, EnumDemo.TYPESCRIPT);
System.out.println("Enum set 1 containing values are :: ");
System.out.println( enum1);
}
}
enum EnumDemo
{
JAVA, PYTHON, PHP, C, GO, JAVASCRIPT, TYPESCRIPT
};

出力:

Javaの列挙型セット

例 #2

この例では、値 sf enum1 のみを使用して enum2 を作成しています。以下に例を示します。

コード:

import java.util.EnumSet;
public class EnumsetDemo {
public static void main(String[] args) {
// creating reference
EnumSet<EnumDemo> enum1;
// here we are adding elements to the enum1 which we create above.
enum1 = EnumSet.of(EnumDemo.JAVA, EnumDemo.JAVASCRIPT,
EnumDemo.C, EnumDemo.PHP, EnumDemo.GO, EnumDemo.PYTHON, EnumDemo.TYPESCRIPT);
System.out.println("Enum set 1 containing values are :: ");
System.out.println( enum1);
// adding value to another enum set using addAll method
EnumSet<EnumDemo> enum2 = EnumSet.allOf(EnumDemo.class);
System.out.println("Enum set 2 containing values are :: ");
System.out.println( enum2);
}
}
enum EnumDemo
{
JAVA, PYTHON, PHP, C, GO, JAVASCRIPT, TYPESCRIPT
};

出力:

Javaの列挙型セット

例 #3

この例では、補数 f enum1 から enum2 を見つけています。

コード:

import java.util.EnumSet;
public class EnumsetDemo {
public static void main(String[] args) {
// creating reference
EnumSet<EnumDemo> enum1;
// here we are adding elements to the enum1 which we create above.
enum1 = EnumSet.of(EnumDemo.JAVA, EnumDemo.JAVASCRIPT,
EnumDemo.C, EnumDemo.PHP, EnumDemo.GO, EnumDemo.PYTHON, EnumDemo.TYPESCRIPT);
System.out.println("Enum set 1 containing values are :: ");
System.out.println( enum1);
// finind completents of enum1 to enum2
EnumSet<EnumDemo> enum2 = EnumSet.complementOf(enum1);
System.out.println("Enum set 2 containing values are :: ");
System.out.println( enum2);
}
}
enum EnumDemo
{
JAVA, PYTHON, PHP, C, GO, JAVASCRIPT, TYPESCRIPT
};

出力:

Javaの列挙型セット

Example #4

Specifying range to elements to be copied.

Code:

import java.util.EnumSet;
public class EnumsetDemo {
public static void main(String[] args) {
// creating reference
EnumSet<EnumDemo> enum1;
// here we are adding elements to the enum1 which we create above.
enum1 = EnumSet.of(EnumDemo.JAVA, EnumDemo.JAVASCRIPT,
EnumDemo.C, EnumDemo.PHP, EnumDemo.GO, EnumDemo.PYTHON, EnumDemo.TYPESCRIPT);
System.out.println("Enum set 1 containing values are :: ");
System.out.println( enum1);
// here we are specifing the range to another enum using enum1
EnumSet<EnumDemo> enum2 = EnumSet.range(EnumDemo.PYTHON, EnumDemo.JAVASCRIPT);
System.out.println("Enum set 2 containing values are :: ");
System.out.println( enum2);
}
}
enum EnumDemo
{
JAVA, PYTHON, PHP, C, GO, JAVASCRIPT, TYPESCRIPT
};

Output:

Javaの列挙型セット

Example #5

Making copy from existing enum.

Code:

import java.util.EnumSet;
public class EnumsetDemo {
public static void main(String[] args) {
// creating reference
EnumSet<EnumDemo> enum1;
// here we are adding elements to the enum1 which we create above.
enum1 = EnumSet.of(EnumDemo.JAVA, EnumDemo.JAVASCRIPT,
EnumDemo.C, EnumDemo.PHP, EnumDemo.GO, EnumDemo.PYTHON, EnumDemo.TYPESCRIPT);
System.out.println("Enum set 1 containing values are :: ");
System.out.println( enum1);
// here we are copying elements of enum1 to enum2.
EnumSet<EnumDemo> enum2 = EnumSet.copyOf(enum1);
System.out.println("Enum set 2 containing values are :: ");
System.out.println( enum2);
}
}
enum EnumDemo
{
JAVA, PYTHON, PHP, C, GO, JAVASCRIPT, TYPESCRIPT
};

Output:

Javaの列挙型セット

Conclusion

Java EnumSet is the implementation of the SET interface in java. They are a special type of java collection framework that provides support for enum types in java. We can also make them synchronized as these are not synchronized.

以上がJavaの列挙型セットの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。