検索
ホームページJava&#&チュートリアルJava で EnumMap 関数を使用して列挙型マッピング操作を行う方法

Java では、Enum 型は列挙定数を表すために使用できる非常に便利なデータ型です。 EnumMap は Java の特殊な Map 実装であり、Enum 型のキーと値のペアのみを格納できます。この記事では、EnumMap 関数の使用方法と、Java で EnumMap を使用して列挙型マッピング操作を行う方法を紹介します。

  1. EnumMap 関数の基本的な使用法

EnumMap, V> は Java のジェネリック クラスで、K は列挙型 Key を表します。 V はキーにマップされた値を表します。 EnumMap の作成後、そのキーは同じ列挙型から取得され、すべての値が同じ型である必要があります。 EnumMap 関数の基本的な使用法は次のとおりです。

EnumMap<Weekday, String> enumMap = new EnumMap<>(Weekday.class);
enumMap.put(Weekday.MONDAY, "星期一");
enumMap.put(Weekday.TUESDAY, "星期二");
enumMap.put(Weekday.WEDNESDAY, "星期三");
enumMap.put(Weekday.THURSDAY, "星期四");
enumMap.put(Weekday.FRIDAY, "星期五");
enumMap.put(Weekday.SATURDAY, "星期六");
enumMap.put(Weekday.SUNDAY, "星期日");

最初に EnumMap オブジェクト enumMap を作成し、EnumMap の put メソッドを通じて各曜日と対応する中国語名を EnumMap に格納します。このようにして、基本的な EnumMap の作成と初期化が完了しました。

  1. EnumMap 関数の初期化

上記のコード例では、すべての値を自動的に null に初期化する EnumMap のデフォルト コンストラクターを使用します。実際、初期化に EnumMap の別のコンストラクターを使用することもできます。このコンストラクターは初期値を設定し、EnumMap 内のすべての値をこの初期値に初期化します。以下は、EnumMap 関数の初期化サンプル コードです。

EnumMap<Weekday, String> enumMap = new EnumMap<>(Weekday.class);
enumMap.put(Weekday.MONDAY, "星期一");
enumMap.put(Weekday.TUESDAY, "星期二");
enumMap.put(Weekday.WEDNESDAY, "星期三");
enumMap.put(Weekday.THURSDAY, "星期四");
enumMap.put(Weekday.FRIDAY, "星期五");
enumMap.put(Weekday.SATURDAY, "星期六");
enumMap.put(Weekday.SUNDAY, "星期日");

// 使用初始化值,将所有键值对的值都设置为"假期" 
EnumMap defaultEnumMap = new EnumMap<>(Weekday.class);
defaultEnumMap.putAll(Collections.singletonMap(null, "假期"));
EnumMap enumMapWithDefaultValue = new EnumMap<>(defaultEnumMap);
enumMapWithDefaultValue.putAll(enumMap);

上記のサンプル コードでは、Collections.singletonMap メソッドを使用して、キーと値のペアを 1 つだけ含むマップを作成しました。そのキーは null で、そのペアは値は「休日」です。次に、この Map を初期値として使用し、新しい EnumMap オブジェクト enumMapWithDefaultValue を作成し、以前に作成した enumMap 内のキーと値のペアをこの新しい EnumMap オブジェクトにコピーします。

このサンプル コードでは、EnumMap コンストラクターを使用して初期化する方法と、別の Map を初期値として使用して新しい EnumMap を作成する方法を理解できます。

  1. EnumMap 関数の走査

EnumMap 内のすべての要素の走査は、通常、必須の操作です。 Java でイテレータを使用すると、この操作を実現できます。以下は、EnumMap を走査するためのサンプル コードです。

EnumMap<Weekday, String> enumMap = new EnumMap<>(Weekday.class);
enumMap.put(Weekday.MONDAY, "星期一");
enumMap.put(Weekday.TUESDAY, "星期二");
enumMap.put(Weekday.WEDNESDAY, "星期三");
enumMap.put(Weekday.THURSDAY, "星期四");
enumMap.put(Weekday.FRIDAY, "星期五");
enumMap.put(Weekday.SATURDAY, "星期六");
enumMap.put(Weekday.SUNDAY, "星期日");

// 使用迭代器遍历EnumMap中的所有键值对
Iterator> iterator = enumMap.entrySet().iterator();
while (iterator.hasNext()) {
    Map.Entry entry = iterator.next();
    Weekday key = entry.getKey();
    String value = entry.getValue();
    System.out.println(key + ": " + value);
}

// 使用foreach循环遍历EnumMap中的所有值
for (String value : enumMap.values()) {
    System.out.println(value);
}

このサンプル コードでは、Java のイテレータを使用して、EnumMap 内のすべてのキーと値のペアを走査します。まず EnumMap のentrySet を取得し、次に、entrySet によって返されたイテレータを使用して、すべてのキーと値のペアを順番に走査します。各キーと値のペアについて、getKey メソッドを使用してキーを取得し、getValue メソッドを使用して値を取得し、コンソールに出力します。

foreach ループを使用して、EnumMap 内のすべての値を反復処理することもできます。列挙型をキーとして使用して値を取得するだけで、キーを取得するために getKey メソッドを頻繁に使用する必要がなくなります。

  1. EnumMap 関数の実践的な応用

上記で紹介した基本的な使用法に加えて、EnumMap 関数には多くの実践的な応用シナリオがあります。

4.1 列挙型マッピング操作

EnumMap の最も一般的な使用法は、列挙型を他の値にマッピングすることです。たとえば、次のサンプル コードでは、列挙型 Weekday を数値 (0 ~ 6) にマップします。

public enum Weekday {
    MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}

// 使用EnumMap将Weekday枚举映射到数字
EnumMap<Weekday, Integer> enumMap = new EnumMap<>(Weekday.class);
enumMap.put(Weekday.MONDAY, 0);
enumMap.put(Weekday.TUESDAY, 1);
enumMap.put(Weekday.WEDNESDAY, 2);
enumMap.put(Weekday.THURSDAY, 3);
enumMap.put(Weekday.FRIDAY, 4);
enumMap.put(Weekday.SATURDAY, 5);
enumMap.put(Weekday.SUNDAY, 6);

4.2 列挙型 counter

場合によっては、列挙型 counter

列挙型の数をカウントするカウンター。 EnumMap はこの機能を簡単に実装できます。サンプル コードは次のとおりです:

public enum Gender {
    MALE, FEMALE
}

// 使用EnumMap实现枚举类型计数器
EnumMap<Gender, Integer> genderCount = new EnumMap<>(Gender.class);
genderCount.put(Gender.MALE, 0);
genderCount.put(Gender.FEMALE, 0);

List<Gender> genderList = Arrays.asList(
    Gender.MALE, 
    Gender.MALE, 
    Gender.MALE, 
    Gender.FEMALE, 
    Gender.FEMALE
);

for (Gender gender : genderList) {
    genderCount.put(gender, genderCount.get(gender) + 1);
}

System.out.println("男性数量:" + genderCount.get(Gender.MALE));
System.out.println("女性数量:" + genderCount.get(Gender.FEMALE));

上記のサンプル コードでは、まず、Gender タイプの数を記録するための EnumMap オブジェクトのenderCount を作成しました。次に、EnumMap の put メソッドを使用して、各性別タイプの番号を 0 に初期化します。次に、リストを使用して性別リストをシミュレートし、リストを走査して各性別の出現数を数えます。最後に男性と女性の数を出力します。

4.3 列挙型計算機

列挙型カウンターと同様に、EnumMap を使用して列挙型の加算と減算を実装することもできます。たとえば、次のサンプル コードでは、特定の単語に特定の英語文字が出現する回数を数える簡単な計算機を実装しました。

public enum Letter {
    A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z
}

// 使用EnumMap实现枚举类型计算器
EnumMap<Letter, Integer> letterCount = new EnumMap<>(Letter.class);
for (Letter letter : Letter.values()) {
    letterCount.put(letter, 0);
}

String word = "Hello, World!";
for (int i = 0; i < word.length(); i++) {
    char c = word.charAt(i);
    if (c >= 'A' && c <= 'Z') {
        Letter letter = Letter.valueOf(String.valueOf(c));
        letterCount.put(letter, letterCount.get(letter) + 1);
    }
}

for (Letter letter : Letter.values()) {
    if (letterCount.get(letter) > 0) {
        System.out.println(letter + ": " + letterCount.get(letter));
    }
}

上記のサンプル コードでは、最初に EnumMap オブジェクト LetterCount を作成しました。 、各文字の出現数を記録するために使用されます。次に、for ループを使用して Letter 列挙型を反復処理し、各文字の初期値を 0 に設定します。次に、単語をシミュレートする文字列単語を定義しました。 Word の各文字を反復処理して、それが大文字であるかどうかを判断します。大文字の場合は、Letter.valueOf メソッドを使用してそれを Letter タイプに変換し、対応する Letter タイプの数を LetterCount に蓄積します。最後に、Letter 列挙型を反復処理し、出現回数が 0 より大きい文字と対応する回数を出力します。

まとめ

###この記事では、EnumMap関数の基本的な使い方、初期化、トラバース、実践的な応用などを紹介しました。 EnumMap は Java での非常に実用的な Map 実装であり、Enum 型と組み合わせて使用​​すると、列挙型マッピング、列挙型統計、計算機、その他のアプリケーションを実装できます。 EnumMap の使い方をマスターすると、Java プログラムの開発効率とコード品質の向上に役立ちます。 ###

以上がJava で EnumMap 関数を使用して列挙型マッピング操作を行う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?Mar 17, 2025 pm 05:46 PM

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?Mar 17, 2025 pm 05:45 PM

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?Mar 17, 2025 pm 05:44 PM

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?Mar 17, 2025 pm 05:43 PM

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Mar 17, 2025 pm 05:35 PM

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境