SalesforceにおけるWebサービスコールアウトのテスト完全ガイド

Salesforce Apex で Map<String, Integer> を初期化する方法


Map<String, Integer>
を初期化する方法は以下のように複数のアプローチがあります。それぞれの例を説明します。


1. 空のマップを初期化

Map<String, Integer> myMap = new Map<String, Integer>();

空のマップを作成し、必要に応じて後でキーと値を追加します。


2. 静的初期化子を使用

以下のように静的リテラルで初期値を指定できます。

Map<String, Integer> myMap = new Map<String, Integer>{
    'Apple' => 10,
    'Banana' => 20,
    'Cherry' => 30
};

解説:

  • 'Apple' => 10 は、キー 'Apple' に値 10 を割り当てます。
  • この形式は簡潔で見やすいため、初期値がある場合に便利です。

3. 別のデータ構造を変換して初期化

たとえば、リストやその他のデータ構造からマップを作成できます。

例: リストから変換

List<String> fruits = new List<String>{'Apple', 'Banana', 'Cherry'};
Map<String, Integer> myMap = new Map<String, Integer>();

for (String fruit : fruits) {
    myMap.put(fruit, fruit.length()); // キーは果物の名前、値は文字数
}

このコードはリストを反復処理して、キーとしてリストの要素、値として文字数を追加しています。


4. Apex クラスのメソッド内で生成

カスタムメソッドを使ってマップを動的に生成できます。

例: ヘルパーメソッドを利用

public Map<String, Integer> generateMap() {
    Map<String, Integer> mapData = new Map<String, Integer>();
    mapData.put('Dog', 1);
    mapData.put('Cat', 2);
    mapData.put('Bird', 3);
    return mapData;
}

// 呼び出し例
Map<String, Integer> myMap = generateMap();

5. Map の値をインクリメント

マップを初期化して値を操作する例です。

Map<String, Integer> myMap = new Map<String, Integer>{
    'A' => 1,
    'B' => 2
};

// 値をインクリメント
myMap.put('A', myMap.get('A') + 1); // A の値は 2 に
myMap.put('C', 1); // 新しいキー C を追加
System.debug(myMap); // 出力: {A=2, B=2, C=1}

6. null 値を許容しないチェック

Map に null 値を許容しないケースを追加することも可能です。

Map<String, Integer> myMap = new Map<String, Integer>{
    'Alpha' => 1,
    'Beta' => 2
};

if (!myMap.containsKey('Gamma')) {
    myMap.put('Gamma', 0); // デフォルト値を設定
}

まとめ

状況に応じて以下の方法を使い分けましょう:

  • 初期値がある場合は 静的リテラル
  • データを動的に追加する場合は for ループカスタムメソッド
  • データ変換が必要な場合は リストなどから変換

コメント