工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Java

Java EnumMap

Java EnumMap

このチュートリアルでは、例を使用して Java EnumMap クラスとその操作について学習します。

EnumMap Java コレクション フレームワークのクラスは、列挙型の要素のマップ実装を提供します。

EnumMap で 、列挙要素はキーとして使用されます . Map インターフェースを実装します。

EnumMap について学ぶ前に 、Java Enums について理解しておいてください。


EnumMap の作成

enum マップを作成するには、java.util.EnumMap をインポートする必要があります。 最初にパッケージ。パッケージをインポートしたら、Java で enum マップを作成する方法を次に示します。

enum Size {
    SMALL, MEDIUM, LARGE, EXTRALARGE
}

EnumMap<Size, Integer> sizes = new EnumMap<>(Size.class);

上記の例では、sizes という名前の列挙マップを作成しました。 .

ここで、


EnumMap のメソッド

EnumMap クラスは、enum マップでさまざまな要素を実行できるようにするメソッドを提供します。


要素を EnumMap に挿入

たとえば、

import java.util.EnumMap;

class Main {

    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }
    public static void main(String[] args) {

        // Creating an EnumMap of the Size enum
        EnumMap<Size, Integer> sizes1 = new EnumMap<>(Size.class);

        // Using the put() Method
        sizes1.put(Size.SMALL, 28);
        sizes1.put(Size.MEDIUM, 32);
        System.out.println("EnumMap1: " + sizes1);

        EnumMap<Size, Integer> sizes2 = new EnumMap<>(Size.class);

        // Using the putAll() Method
        sizes2.putAll(sizes1);
        sizes2.put(Size.LARGE, 36);
        System.out.println("EnumMap2: " + sizes2);
    }
}

出力

EnumMap1: {SMALL=28, MEDIUM=32}
EnumMap2: {SMALL=28, MEDIUM=32, LARGE=36}

上記の例では、putAll() を使用しています。 列挙型マップ sizes1 のすべての要素を挿入するメソッド sizes2 の列挙型マップへ .

HashMap などの他のマップから要素を挿入することも可能です 、 TreeMap などを putAll() を使用して列挙型マップに .ただし、すべてのマップは同じ列挙型である必要があります。


EnumMap 要素へのアクセス

<強い>1. entrySet()、keySet()、values() の使用

たとえば、

import java.util.EnumMap;

class Main {

    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }
    public static void main(String[] args) {

        // Creating an EnumMap of the Size enum
        EnumMap<Size, Integer> sizes = new EnumMap<>(Size.class);
        sizes.put(Size.SMALL, 28);
        sizes.put(Size.MEDIUM, 32);
        sizes.put(Size.LARGE, 36);
        sizes.put(Size.EXTRALARGE, 40);
        System.out.println("EnumMap: " + sizes);

        // Using the entrySet() Method
        System.out.println("Key/Value mappings: " + sizes.entrySet());

        // Using the keySet() Method
        System.out.println("Keys: " + sizes.keySet());

        // Using the values() Method
        System.out.println("Values: " + sizes.values());
    }
}

出力

EnumMap: {SMALL=28, MEDIUM=32, LARGE=36, EXTRALARGE=40}
Key/Value mappings: [SMALL=28, MEDIUM=32, LARGE=36, EXTRALARGE=40]
Keys: [SMALL, MEDIUM, LARGE, EXTRALARGE]
Values: [28, 32, 36, 40]

<強い>2. get() メソッドの使用

get() メソッドは、指定されたキーに関連付けられた値を返します。 null を返します 指定されたキーが見つからない場合。

たとえば、

import java.util.EnumMap;

class Main {

    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }
    public static void main(String[] args) {

        // Creating an EnumMap of the Size enum
        EnumMap<Size, Integer> sizes = new EnumMap<>(Size.class);
        sizes.put(Size.SMALL, 28);
        sizes.put(Size.MEDIUM, 32);
        sizes.put(Size.LARGE, 36);
        sizes.put(Size.EXTRALARGE, 40);
        System.out.println("EnumMap: " + sizes);

        // Using the get() Method
        int value = sizes.get(Size.MEDIUM);
        System.out.println("Value of MEDIUM: " + value);
    }
}

出力

EnumMap: {SMALL=28, MEDIUM=32, LARGE=36, EXTRALARGE=40}
Value of MEDIUM: 32

EnumMap 要素を削除

たとえば、

import java.util.EnumMap;

class Main {

    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }
    public static void main(String[] args) {

        // Creating an EnumMap of the Size enum
        EnumMap<Size, Integer> sizes = new EnumMap<>(Size.class);
        sizes.put(Size.SMALL, 28);
        sizes.put(Size.MEDIUM, 32);
        sizes.put(Size.LARGE, 36);
        sizes.put(Size.EXTRALARGE, 40);
        System.out.println("EnumMap: " + sizes);

        // Using the remove() Method
        int value = sizes.remove(Size.MEDIUM);
        System.out.println("Removed Value: " + value);

        boolean result = sizes.remove(Size.SMALL, 28);
        System.out.println("Is the entry {SMALL=28} removed? " + result);

        System.out.println("Updated EnumMap: " + sizes);
    }
}

出力

EnumMap: {SMALL=28, MEDIUM=32, LARGE=36, EXTRALARGE=40}
Removed Value: 32
Is the entry {SMALL=28} removed? True
Updated EnumMap: {LARGE=36, EXTRALARGE=40}

EnumMap 要素を置換

import java.util.EnumMap;

class Main {

    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }
    public static void main(String[] args) {

        // Creating an EnumMap of the Size enum
        EnumMap<Size, Integer> sizes = new EnumMap<>(Size.class);
        sizes.put(Size.SMALL, 28);
        sizes.put(Size.MEDIUM, 32);
        sizes.put(Size.LARGE, 36);
        sizes.put(Size.EXTRALARGE, 40);
        System.out.println("EnumMap: " + sizes);

        // Using the replace() Method
        sizes.replace(Size.MEDIUM, 30);
        sizes.replace(Size.LARGE, 36, 34);
        System.out.println("EnumMap using replace(): " + sizes);

        // Using the replaceAll() Method
        sizes.replaceAll((key, oldValue) -> oldValue + 3);
        System.out.println("EnumMap using replaceAll(): " + sizes);
    }
}

出力

EnumMap: {SMALL=28, MEDIUM=32, LARGE=36, EXTRALARGE=40}
EnumMap using replace(): {SMALL=28, MEDIUM=30, LARGE=34, EXTRALARGE=40}
EnumMap using replaceAll(): {SMALL=31, MEDIUM=33, LARGE=37, EXTRALARGE=43}

上記のプログラムでは、ステートメントに注意してください

sizes.replaceAll((key, oldValue) -> oldValue + 3);

ここで、メソッドはマップのすべてのエントリにアクセスします。次に、すべての値をラムダ式によって提供される新しい値に置き換えます。


その他の方法

メソッド 説明
clone() EnumMap のコピーを作成します
containsKey() EnumMap を検索します 指定されたキーに対して、ブール値の結果を返します
containsValue() EnumMap を検索します 指定された値に対して、ブール値の結果を返します
size() EnumMap のサイズを返します
clear() EnumMap からすべてのエントリを削除します

EnumSet 対。 EnumMap

EnumSet と EnumMap の両方 クラスは、列挙値を格納するためのデータ構造を提供します。ただし、それらの間にはいくつかの大きな違いがあります。


クローン可能でシリアライズ可能なインターフェース

EnumMap クラスは Cloneable も実装しています と Serializable

クローン可能なインターフェース

EnumMap を許可します クラスのインスタンスのコピーを作成するクラス。

シリアライズ可能なインターフェース

Java オブジェクトをネットワーク経由で送信する必要がある場合は常に、オブジェクトをビットまたはバイトに変換する必要があります。これは、Java オブジェクトをネットワーク経由で送信できないためです。

Serializable インターフェイスにより、クラスをシリアル化できます。これは Serializable を実装するクラスのオブジェクトを意味します ビットまたはバイトに変換できます。


Java

  1. C列挙
  2. Java オペレーター
  3. Java コメント
  4. Java for-each ループ
  5. Java 文字列
  6. Java インターフェイス
  7. Java匿名クラス
  8. Java 列挙型
  9. Java 列挙型コンストラクター
  10. Java列挙型文字列
  11. Java try-with-resources