Java putの使い方

この記事のポイント

Javaのputメソッドの基本的な使い方から実践的な応用例まで、初心者にもわかりやすく解説します。

この記事を読むと、次のようなことが身に付きます。

  • mapにデータを保存する基本の使い方がわかる
  • データの種類に合わせて最適な保存方法を選べるようになる
  • 実践で役立つ便利なコード例を知る

この記事を通してputメソッドをマスターすれば、効率よくデータを管理するプログラムが書けるようになります。

目次

putとは?

putメソッドは、Javaのmapインターフェースで用意されている、データを管理するための仕組みです。キーと値をひとまとめにして保存する役割を持っています。

日常生活で例えると、名前を書いたラベル(キー)を荷物(値)に貼り付けて、専用のロッカー(map)の中に預けるようなイメージです。ラベルの名前を確認すれば、いつでも正しい荷物を取り出すことができます。

Javaのプログラムでは、ユーザーIDとユーザーの名前をセットにして管理したいときなどに活用されます。

putメソッドの特徴

  • キーと値(バリュー)をペアにしてmapへ保存できる
  • すでに存在するキーを指定したときは値の内容が新しいデータで上書きされる
  • HashMapやTreeMapなどのmapを継承したクラスで使用できる
  • 戻り値としてそのキーに以前ひも付いていたデータを返す
  • 新しくデータを登録したときや以前のデータがない場合はnullを返す

効率よくデータを整理して扱うために、Javaのプログラミングで欠かせない機能です。

【関連】
Javaをもっと詳しく学ぶならpaizaラーニング

基本構文

Java putメソッドの基本的な構文は、map.put(key, value)の形式で記述します。第1引数にキー、第2引数に値を指定することで、Mapにデータを格納できます。

import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { Map<String, String> map = new HashMap<>(); map.put("name", "ライオン"); map.put("name", "トラ"); // 同じキーで別の値を保存(上書きされる) map.put("type", "動物"); System.out.println(map); } }

出力結果

{name=トラ, type=動物}

この例では、mapオブジェクトを生成して動物の名前や種類を保存しています。putメソッドの第1引数にキー、第2引数に値を指定して呼び出すことで、関連するデータをひも付けて管理できます。途中で同じキーを指定して別の値を保存しているため、データが最新の内容で上書きされていることがわかります。

また、putメソッドは戻り値として以前の値を返すため、更新処理の確認にも活用できます。nullが返された場合は新しいキーが追加されたことを意味し、値が返された場合は既存のキーの値が更新されたことを示します。この特性を利用することで、データの追加と更新を判別したり、更新前の値を保持したりすることが可能になります。

実用例

ここからは、putメソッドの使い方を網羅的に紹介します。状況に応じた使い分けを学ぶことで、プログラムでのデータ管理をより効率的に行えるようになります。

基本的なHashMapへのデータ追加

最もシンプルなputメソッドの使用例として、HashMapに動物の名前と種類を格納する処理を実装します。

import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { Map<String, String> animalMap = new HashMap<>(); animalMap.put("ネコ", "哺乳類"); animalMap.put("イヌ", "哺乳類"); animalMap.put("トリ", "鳥類"); System.out.println("登録された動物: " + animalMap); } }

出力結果

登録された動物: {ネコ=哺乳類, トリ=鳥類, イヌ=哺乳類}

この例では、HashMapを生成して動物名と分類を保存しています。putメソッドを使うと、第1引数に指定した名前がキーとなり、第2引数の分類が値としてひも付けられます。出力結果を見ると、キーと値がペアになって管理されている様子がわかります。関連する2つのデータをセットにして扱う際に役立つ仕組みです。

複数データの一括登録処理

配列にあるデータを繰り返し処理を使って効率よくmapに保存する方法です。

import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { String[] animals = {"ゾウ", "キリン", "シマウマ"}; String[] habitats = {"サバンナ", "森", "草原"}; Map<String, String> habitatMap = new HashMap<>(); for (int i = 0; i < animals.length; i++) { habitatMap.put(animals[i], habitats[i]); } System.out.println("動物と生息地: " + habitatMap); } }

出力結果

動物と生息地: {キリン=森, シマウマ=草原, ゾウ=サバンナ}

この例では、2つの配列にあるデータをループ処理でmapへ保存しています。動物の名前が入った配列をキーに、それぞれの生息地が入った配列を値として順に取り出すことで、対応するデータを正確に登録できます。データベースやCSVファイルなどの大量の情報を読み込んでまとめて整理したい場合に役立つ手段です。

条件分岐を使った動的データ格納

条件に応じて異なるデータをMapに格納する動的な処理の実装例を紹介します。

import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { Map<String, Integer> animalAges = new HashMap<>(); String[] animals = {"ウサギ", "カメ", "ハト"}; for (String animal : animals) { if (animal.equals("カメ")) { animalAges.put(animal, 150); } else { animalAges.put(animal, 5); } } System.out.println("動物の年齢: " + animalAges); } }

出力結果

動物の年齢: {カメ=150, ウサギ=5, ハト=5}

この例では、if文を使用して条件に応じた値をmapに保存しています。動物の種類を判定し、カメの場合は150を、それ以外の場合は5を年齢として登録する流れです。状況によって保存する内容を変えたい場合に有効な書き方であり、プログラムに柔軟な判断を組み込むことができます。

TreeMapを使った自動ソート機能

TreeMapのputメソッドを使用して、キーの自然順序でデータを自動ソートする方法を実装します。

import java.util.Map; import java.util.TreeMap; public class Main { public static void main(String[] args) { Map<String, Integer> animalSizes = new TreeMap<>(); animalSizes.put("ゾウ", 5000); animalSizes.put("アリ", 1); animalSizes.put("クマ", 300); animalSizes.put("イヌ", 20); System.out.println("サイズ順(名前でソート): " + animalSizes); } }

出力結果

サイズ順(名前でソート): {アリ=1, イヌ=20, クマ=300, ゾウ=5000}

この例では、TreeMapを使用してデータを保存しています。TreeMapは値を保存する際、自動的にキーを辞書順で並び替える性質を持っています。出力結果を確認すると、追加した順番に関わらず動物の名前が五十音順に並んでおり、データを整理して表示したい場合に最適です。

LinkedHashMapでの挿入順序保持

LinkedHashMapを使用して、データを追加した順番をそのまま守って保存する方法です。

import java.util.LinkedHashMap; import java.util.Map; public class Main { public static void main(String[] args) { Map<String, String> animalColors = new LinkedHashMap<>(); animalColors.put("パンダ", "白黒"); animalColors.put("フラミンゴ", "ピンク"); animalColors.put("カラス", "黒"); animalColors.put("シロクマ", "白"); System.out.println("挿入順序で表示: " + animalColors); } }

出力結果

挿入順序で表示: {パンダ=白黒, フラミンゴ=ピンク, カラス=黒, シロクマ=白}

この例では、LinkedHashMapを使用してデータを保存しています。通常のhashMapとは異なり、データを追加した順番をそのまま保持できる点が特徴です。登録した順序が意味を持つプログラムや、後から追加順にデータを取り出したい場合に非常に便利なクラスです。

putIfAbsentメソッドの活用法

すでにキーが存在する場合は何もしない、putIfAbsent(存在しない場合のみ保存)メソッドの使い方です。

import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { Map<String, Integer> animalCount = new HashMap<>(); animalCount.put("トラ", 100); animalCount.putIfAbsent("トラ", 200); animalCount.putIfAbsent("ライオン", 80); System.out.println("動物の個体数: " + animalCount); } }

出力結果

動物の個体数: {トラ=100, ライオン=80}

この例では、putIfAbsentメソッドを使って重複がない場合のみデータを追加しています。トラはすでに登録されているため値は更新されませんが、ライオンは存在しないため新しく追加されます。すでに存在するデータを誤って上書きしたくない場面で活用できる、安全な登録方法です。

リストを値として保存する方法

1つのキーに対して、種類や年齢といった複数の情報をまとめて保存したい場合は、値の部分にリストを使用する方法があります。標準の機能を組み合わせることで、複数のデータを一括で管理できます。

import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class Main { public static void main(String[] args) { Map<String, List<String>> animalDatabase = new HashMap<>(); // 1つ目のデータをリストで作成 List<String> info1 = new ArrayList<>(); info1.add("チーター"); info1.add("3歳"); animalDatabase.put("A001", info1); // 2つ目のデータをリストで作成 List<String> info2 = new ArrayList<>(); info2.add("ペンギン"); info2.add("7歳"); animalDatabase.put("B002", info2); System.out.println("動物データベース: " + animalDatabase); } }

出力結果

動物データベース: {A001=[チーター, 3歳], B002=[ペンギン, 7歳]}

この例では、mapの値にlistを使用して複数の情報を管理しています。1つのキーに対して名前と年齢をまとめたリストを保存することで、新しくクラスを定義せずに複雑なデータを扱う仕組みを実現しています。

まず、ArrayListを生成して個別の情報を追加し、リスト自体をputメソッドでmapに登録しています。実行結果を見ると、1つのキーに対して複数のデータがひも付いて登録されている様子がわかります。

ファイルデータの読み込みとMap格納

設定ファイルのようなキーと値のペアを模擬的に読み込んでMapに格納する処理を実装します。

import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { String[] configData = {"サーバー名=ライオンサーバー", "ポート=8080", "タイムアウト=30"}; Map<String, String> config = new HashMap<>(); for (String line : configData) { String[] parts = line.split("="); if (parts.length == 2) { config.put(parts[0], parts[1]); } } System.out.println("設定情報: " + config); System.out.println("サーバー名: " + config.get("サーバー名")); } }

出力結果

設定情報: {ポート=8080, タイムアウト=30, サーバー名=ライオンサーバー}
サーバー名: ライオンサーバー

この例では、文字列の配列を解析して設定情報をmapに保存しています。各文字列を記号で分割し、左側をキー、右側を値として登録する仕組みです。プログラムの設定ファイルや外部データを読み込んで活用する際の基礎となる処理であり、実用的なデータの整形方法といえます。

まとめ

Javaのputメソッドは、Mapという仕組みにデータを入れるための基本的なメソッドです。
Mapはキーと値をセットで管理するための入れ物で、putメソッドを使うことで、指定したキーに対応する値を保存できます。

Mapには、HashMapやTreeMap、LinkedHashMapなどいくつか種類がありますが、どれもputメソッドの使い方自体は同じです。違いは「順番を覚えるか」「並び替えるか」などの特徴ですので、最初は深く考えなくても問題ありません。

putが活躍する場面

putメソッドは、次のような場面でよく使われます。

  • データベースから取得した情報を、プログラム内で一時的に保存したいとき
  • 設定ファイルや環境変数の内容を読み込み、あとから参照しやすくしたいとき
  • ユーザーの入力内容をまとめて管理し、後の処理で使いたいとき

このように「あとで使うデータを、名前(キー)付きで保存したい場合」に向いています。

重要なポイント

putメソッドを使うときに、覚えておきたいポイントは次のとおりです。

  • 同じキーを指定してputすると、前の値は新しい値で上書きされる
  • putメソッドは、以前に登録されていた値を戻り値として返す
  • すでに値がある場合は追加したくないときは、putIfAbsentメソッドを使う方法もある

これらを理解しておくと、「新しく追加したのか」「更新したのか」を判断しながら、安全にデータを扱えるようになります。

putメソッドは、Mapを使ううえで必ず登場する基本的なメソッドです。まずは「キーと値をセットで保存できる」という点をしっかり押さえて、少しずつ使い慣れていくとよいでしょう。

レベルを更に上げたい方はpaizaプログラミングスキルチェック

  1. paizaラーニングトップ
  2. リファレンス
  3. Javaのリファレンス記事一覧
  4. Java putの使い方