【Java】putAllを使ってマップ(Map)のマッピングをコピーする!
マップ(Map)のマッピングをコピーするにはMapクラスのputAllメソッドを使用します。
MapクラスのputAllメソッドは指定したマップから全てのマッピングを追加するメソッドとなります。
キーが存在しない場合は追加されますがキーが重複した場合に追加後の値を上書きするようになります。
今回はMapクラスのputAllメソッドを使って以下の場合でマップ(Map)のマッピングをコピーしていきます。
⚫︎ マッピングをコピーする場合
⚫︎ キーが重複している状態でマッピングをコピーする場合
目次
putAllメソッドとは
MapクラスのputAllメソッドは指定したマップから全てのマッピングをコピーするメソッドとなります。
キーの一致する場合は追加後の値に上書きされ、マップにキーが存在しない場合はそのまま追加されます。
putAllメソッドの書き方
putAllメソッドの構文は下記となります。
1 |
追加されるマップ.putAll(追加するマップ) |
パラメータ
⚫︎ 追加されるマップ:
追加される対象のマップを指定します
⚫︎ 追加するマップ:
対象のマップに追加したいマップを指定します
putAllメソッドを呼び出すことで()に指定した追加するマップの要素を追加されるマップ内に要素を追加することができます。
マッピングをコピーするサンプルコード
マップ(Map)のマッピングをコピーするサンプルコードを紹介します。
マップのマッピングをコピーする場合
putAllメソッドを使用して、マップのマッピングをコピーします。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
// マップに値を格納する import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) throws Exception { // mapAを作成 Map<Integer, String> mapA = new HashMap<Integer, String>(); //マップに値を格納する mapA.put(Integer.valueOf(1), "テレビ"); mapA.put(Integer.valueOf(2), "冷蔵庫"); mapA.put(Integer.valueOf(3), "洗濯機"); mapA.put(Integer.valueOf(4), "電子レンジ"); mapA.put(Integer.valueOf(5), "炊飯器"); mapA.put(Integer.valueOf(6), "掃除機"); // mapBを作成 Map<Integer, String> mapB = new HashMap<Integer, String>(); //マップに値を格納する mapB.put(Integer.valueOf(7), "扇風機"); mapB.put(Integer.valueOf(8), "空気清浄機"); mapB.put(Integer.valueOf(9), "乾燥機"); // マップの内容を表示 System.out.println("・コピー前"); System.out.println("mapA:" + mapA); System.out.println("mapB:" + mapB); // マップをマージ mapA.putAll(mapB); // マップの内容を表示 System.out.println("・コピー後"); System.out.println("mapA:" + mapA); System.out.println("mapB:" + mapB); } } |
出力結果
・コピー前
mapA:{1=テレビ, 2=冷蔵庫, 3=洗濯機, 4=電子レンジ, 5=炊飯器, 6=掃除機}
mapB:{7=扇風機, 8=空気清浄機, 9=乾燥機}
・コピー後
mapA:{1=テレビ, 2=冷蔵庫, 3=洗濯機, 4=電子レンジ, 5=炊飯器, 6=掃除機, 7=扇風機, 8=空気清浄機, 9=乾燥機}
mapB:{7=扇風機, 8=空気清浄機, 9=乾燥機}
map2の値がmap1にマージされて格納されています。
キーが重複している状態でマッピングをコピーする場合
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
// マップに値を格納する import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) throws Exception { // mapAを作成 Map<Integer, String> mapA = new HashMap<Integer, String>(); //マップに値を格納する mapA.put(Integer.valueOf(1), "テレビ"); mapA.put(Integer.valueOf(2), "冷蔵庫"); mapA.put(Integer.valueOf(3), "洗濯機"); mapA.put(Integer.valueOf(4), "電子レンジ"); mapA.put(Integer.valueOf(5), "炊飯器"); mapA.put(Integer.valueOf(6), "掃除機"); // mapBを作成 Map<Integer, String> mapB = new HashMap<Integer, String>(); //マップに値を格納する mapB.put(Integer.valueOf(1), "扇風機"); mapB.put(Integer.valueOf(2), "空気清浄機"); mapB.put(Integer.valueOf(3), "乾燥機"); // マップの内容を表示 System.out.println("・コピー前"); System.out.println("mapA:" + mapA); System.out.println("mapB:" + mapB); // マップをマージ mapA.putAll(mapB); // マップの内容を表示 System.out.println("・コピー後"); System.out.println("mapA:" + mapA); System.out.println("mapB:" + mapB); } } |
出力結果
・コピー前
mapA:{1=テレビ, 2=冷蔵庫, 3=洗濯機, 4=電子レンジ, 5=炊飯器, 6=掃除機}
mapB:{1=扇風機, 2=空気清浄機, 3=乾燥機}
・コピー後
mapA:{1=扇風機, 2=空気清浄機, 3=乾燥機, 4=電子レンジ, 5=炊飯器, 6=掃除機}
mapB:{1=扇風機, 2=空気清浄機, 3=乾燥機}
マップに値が格納されましたが、キー1と2と3が重複しているため、重複したキー1の値は「テレビ」から「扇風機」へ、2の値は「冷蔵庫」から「空気清浄機」へ、3の値は「洗濯機」から「乾燥機」へ上書きされています。
今回のポイント
putAllでマップ(Map)のマッピングをコピー
マップのマッピングをコピーするにはMapクラスのputAllメソッドを使用する
⚫︎ MapクラスのputAllメソッドでマップ(Map)のマッピングをコピーする
⚫︎ putAllメソッドのパラメータに追加したいマップを指定し、メソッドを呼び出すマップにパラメータのマップの全要素が追加される
⚫︎ putAllメソッドで重複するキーを指定する場合は、パラメータのマップ内の要素へ上書きされる
関連記事
マップ(Map)に値を格納するputメソッドについてはこちらをご参考ください。
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。