はじめに
今回は、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)
以上、ログになります。
これからも継続していきましょう!!

 
  
  
  
  

コメント