【Android Java】HashMapの中でListを使う

## ■概要 01
・ボタン、「北陸」013370「首都圏」013371 に対応したデータを作成。
![Screenshot_20241008-085536_YKKAPP - コピー.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478380/a9ece82d-70dc-46e3-91e2-50f563e157cd.jpeg)

```java

private void CreateNounyuuCode_And_Hinbann() {

        GlOpenHelper helper_select = new GlOpenHelper(getApplicationContext());
        SQLiteDatabase db_select = helper_select.getReadableDatabase();

        String[] arr_item = new String[3];

        //---- リストを空にする
        NounyuuSakiCode_And_Hinbann_HashMap.clear();

        int num = 0;
        //------------- スピナー　アイテム取得
        try {

            Cursor cursor = db_select.rawQuery("SELECT Master_column_01,Master_column_10,Master_column_06 " +
                    "FROM Master_table WHERE Master_column_01 = '013370' OR " +
                    "Master_column_01 = '013371' ORDER BY Master_column_01;", null);

            int index = 1;
            while (cursor.moveToNext()) {

                //------- 9
                int idx = cursor.getColumnIndex("Master_column_01");
                arr_item[0] = cursor.getString(idx);

                idx = cursor.getColumnIndex("Master_column_10");
                arr_item[1] = cursor.getString(idx);

                idx = cursor.getColumnIndex("Master_column_06");
                arr_item[2] = cursor.getString(idx);

                System.out.println("ハッシュマップテスト:::" + String.valueOf(index) + arr_item[0] + ":" + arr_item[1] + ":" + arr_item[2]);


                // 比較用にハッシュマップに挿入
                if (!NounyuuSakiCode_And_Hinbann_HashMap.containsKey(arr_item[0])) {
                    // キーが存在しない場合は新しいリストを作成
                    NounyuuSakiCode_And_Hinbann_HashMap.put(arr_item[0], new ArrayList<>());
                }
                // リストに品番を追加
                NounyuuSakiCode_And_Hinbann_HashMap.get(arr_item[0]).add(arr_item[1]);
                NounyuuSakiCode_And_Hinbann_HashMap.get(arr_item[0]).add(arr_item[2]);

                num++;
                index++;

            } //-------- while END

        } catch (SQLException e) {
            e.printStackTrace();

        } finally {
            if (db_select != null) {
                db_select.close();
            }
        }

    } // ================== CreateNounyuuCode_And_Hinbann END
    
```
## ■ 概要 02
・QR の読取りで、「北陸」013370「首都圏」013371 番号と照合を掛けて、その中で一致したものを、 NounyuuSakiCode_And_Hinbann_HashMap.get(arr_item[0]).add(arr_item[1]);で照合をかけ、一致したデータの、
NounyuuSakiCode_And_Hinbann_HashMap.get(arr_item[0]).add(arr_item[2]);を表示させる。

![Screenshot_20241008-085604_YKKAPP.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478380/ed743e78-d40f-2d00-c0c5-f99b31f0844e.jpeg)


```java

 private void HanteiHinbanHashMap(HashMap<String, List<String>> map, String NounyuuSakiCode,String HinBan) {

        boolean ErrFlg = false;
        String firstElement = "";
        String secondElement = "";

        for (Map.Entry<String, List<String>> entry : map.entrySet()) {
            String key = entry.getKey();

            // === 納入先コードの指定
            if (key.equals(NounyuuSakiCode)) {
                List<String> values = entry.getValue();

                // 品番が一致するか確認
                for (int i = 0; i < values.size(); i += 2) {
                    String hinban = values.get(i); // 1つ目の品番
                    String suuryou = (i + 1 < values.size()) ? values.get(i + 1) : ""; // 2つ目の数量

                    if (hinban.equals(HinBan)) {
                        // ラベルスキャン表示
                        laveru_scan_text.setText(HinBan);
                        HinbanInit = HinBan;
                        System.out.println("比較OK 含まれている:::key:::" + key + ":::val:::" + hinban);

                        // === 数量（arr_item[2]）を出力
                        System.out.println("対応する数量（arr_item[2]): " + suuryou);
                        syukka_suuryou_text.setText(suuryou);

                        ErrFlg = true;
                        break;
                    } else {
                        System.out.println("比較NG 含まれていない:::key:::" + key + ":::品番:::" + hinban);
                        ErrFlg = false;
                    }
                }
            }
        }
        
        // ========= エラー判定 =========
        if(ErrFlg ) {

        } else {
            // エラーで戻す ***（エラー処理クラスでここ用の functionを作った方が良い）
            CustomDialog Erro_dialog_data_ScanData = new CustomDialog(SecondActivity.this);
            Erro_dialog_data_ScanData.showDialog_Error(
                    "品番エラー",
                    "品番の商品がありません。",
                    "閉じる"
            );
        }

    } // =============================== HanteiHinbanHashMap END

```