【Java】Mapについて(定義・宣言方法・初期化・操作について)

Java

はじめに

今回は、javaの「Map」の使い方について、勉強したことを記載していきたいと思います。

 

Mapとは

「Map」はキーと値をペアとして扱うことができるたクラスになります。ペアとして要素を取り扱われるため、キーは一意になります。
実装クラスには次が用意されています。

メソッド名 詳細
HashMap 要素に順序がなく、追加された順序とは無関係に要素を格納します。
LinkedHashMap 要素に順序を持ったクラスで、追加された順序で要素を格納します。
TreeMap ツリー構造を持ったクラスです。自然順序で要素が格納されます。

 

    /**
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {
        Map<String, String > hashMap = new HashMap<>();
        // 追加
        hashMap.put("TEST1", "A");
        hashMap.put("TEST3", "C");
        hashMap.put("TEST5", "E");
        hashMap.put("TEST2", "B");
        hashMap.put("TEST4", "D");
        hashMap.put("TEST1", "F"); // 同キーは上書き
        // 順序は持たない
        System.out.println(hashMap); 

        Map<String, String > linkedhMap = new LinkedHashMap<>();
        // 追加
        linkedhMap.put("TEST1", "A");
        linkedhMap.put("TEST3", "C");
        linkedhMap.put("TEST5", "E");
        linkedhMap.put("TEST2", "B");
        linkedhMap.put("TEST4", "D");
        linkedhMap.put("TEST1", "F"); // 同キーは上書き
        // 格納準
        System.out.println(linkedhMap); 

        Map<String, String > treehMap = new TreeMap<>();
        // 追加
        treehMap.put("TEST1", "A");
        treehMap.put("TEST3", "C");
        treehMap.put("TEST5", "E");
        treehMap.put("TEST2", "B");
        treehMap.put("TEST4", "D");
        treehMap.put("TEST1", "F"); // 同キーは上書き
        // 自然順序
        System.out.println(treehMap); 
    }

 

Mapに要素を追加・削除

操作 メソッド名 詳細
追加 put(キー, 値) リストに値を追加する
追加 putIfAbsent(キー, 値) 既にキーが存在していない場合のみ追加
削除 remove(キー) 指定したindexを削除する

 

    /**
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {
        Map<String, String > hashMap = new HashMap<>();
        // 追加
        hashMap.put("TEST1", "A");
        hashMap.put("TEST3", "C");
        hashMap.put("TEST5", "E");
        hashMap.put("TEST2", "B");
        hashMap.put("TEST4", "D");
        hashMap.put("TEST1", "F"); // 同キーは上書き
        
        hashMap.putIfAbsent("TEST2", "G"); // 既にキーが存在しているため設定しない
        hashMap.putIfAbsent("TEST6", "H");

        // 削除
        hashMap.remove("TEST4");

        System.out.println(hashMap); 
    }

 

Mapのキー・値を取得

操作 メソッド名 詳細
値取得 get(キー) キーに紐付く値を取得
値全取得 values() 全ての値を取得
キー全取得 keySet() 全てのキーを取得

 

    /**
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {
        Map<String, String > hashMap = new HashMap<>();
        // 追加
        hashMap.put("TEST1", "A");
        hashMap.put("TEST3", "C");
        hashMap.put("TEST5", "E");
        hashMap.put("TEST2", "B");
        hashMap.put("TEST4", "D");
        hashMap.put("TEST1", "F"); // 同キーは上書き
        
        System.out.println(hashMap.get("TEST1")); 
        System.out.println(hashMap.values()); 
        System.out.println(hashMap.keySet()); 
    }

 

Mapの繰り返し処理

foreach文やforeachメソッドを使用することで繰り返し処理を実施することができます。

    /**
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {
        Map<String, String > hashMap = new HashMap<>();
        // 追加
        hashMap.put("TEST1", "A");
        hashMap.put("TEST3", "C");
        hashMap.put("TEST5", "E");
        hashMap.put("TEST2", "B");
        hashMap.put("TEST4", "D");
        hashMap.put("TEST1", "F"); // 同キーは上書き
        
        for (String value : hashMap.keySet()) {
            System.out.println(value); 
        }

        hashMap.keySet().forEach(x -> System.out.println(x));
    }

 

その他のメソッド

メソッド名 詳細
clear Mapの全ての要素を削除する
containsKey 指定したキーがMapに含まれているか判定(含まれている場合true)
containsValue 指定した値がMapに含まれているか判定(含まれている場合true)
size Mapの要素数
isEmpty Mapに要素がない場合、True

 

ドキュメント

【公式ドキュメント】
Java SE Specifications (oracle.com)

 

最後に

Javaの環境構築は、この記事を参照してみてください。
【開発環境構築】VS CodeでJavaを使用するための環境構築を実施する – SEもりのLog (selifemorizo.com)

以上、ログになります。
これからも継続していきましょう!!

Javaサーバーサイド関連
おすすめIT本
良いコード/悪いコードで学ぶ設計入門

「ITエンジニア本大賞2023」技術書部門で大賞を受賞した本です。
・コードの可読性
・普段意識したほうが良いこと
・リファクタリング考え方
等、普段のコードを設計する際に意識することが書かれています。
コードのあるべき姿に迷ったら一度読んでみると良い本です。

仕組みと使い方がわかる Docker&Kubernetesのきほんのきほん

Dockerって何?となったときに私が最初に読んだ本です。
Dockerがどんな仕組みで動いているのか、コマンドでは何を命令しているのかを理解できるように、イラストを多用して説明しています。

1冊ですべて身につくJavaScript入門講座

「ITエンジニア本大賞2024」技術書部門で大賞を受賞した本です。
私が次に読もうと思っている本なのでおすすめとして挙げておきたいと思います。

コメント

タイトルとURLをコピーしました