人生が変わるオンラインサロン!
月3万副業収入が得られる!Mサロン!31日間無料体験!JavaのStreamAPIをさらに学びたい方へ
JavaのStreamAPIを理解して頂くために参考書を執筆致しました!
StreamAPIの演習問題はこちらの参考書に載せているので、問題を解いて理解を深めたい方はこちらの参考書チェックしてください!
下記の画像をクリック!!kindleunlimitedの会員であれば無料で見れます!
⇩初心者向け ⇩中級者向け
JavaでChatGPTAPIを使ってブログ作成を自動化しませんか?
1. JavaのMap型について
JavaのMap型は、キーと値のペアでデータを管理するコレクション型の一つです。
キーと値のペアはエントリと呼ばれ、このエントリを保存し、キーを基にした検索などが可能となります。
特に、HashMap、TreeMap、LinkedHashMapなどの具体的なクラスがMapインターフェースを実装しており、それぞれ特性があります。

2. HashMap, TreeMap, LinkedHashMapの特性
まずはそれぞれの特性を知っておくことが大切です。
- HashMapは、一般的な用途で最も使用されるMapです。要素の順序は保証されませんが、データの追加・取得が高速です。
- TreeMapは、キーの自然順序によって要素がソートされます。データの追加・取得はHashMapよりも遅くなりますが、ソートされたMapが必要な場合に有用です。
- LinkedHashMapは、エントリが追加された順序またはアクセスされた順序で要素を保持します。順序付きのMapが必要な場合に使用します。

3. Mapの作成と要素の追加
では、具体的にMapの作成と要素の追加方法について見ていきましょう。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 12 |
import java.util.*; public class Main { public static void main(String[] args) { Map<String, String> map = new HashMap<>(); map.put("key1", "value1"); map.put("key2", "value2"); map.put("key3", "value3"); System.out.println(map); } } |
出力結果 {key1=value1, key2=value2, key3=value3}
このコードでは、String型のキーと値を持つHashMapを作成し、3つの要素を追加しています。putメソッドを使用してキーと値のペアをMapに追加します。

4. 要素の取得
もちろん、追加した要素を取得することも可能です。
その際には、キーを指定してgetメソッドを使います。それでは実際に見てみましょう。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import java.util.*; public class Main { public static void main(String[] args) { Map<String, String> map = new HashMap<>(); map.put("key1", "value1"); map.put("key2", "value2"); map.put("key3", "value3"); String value1 = map.get("key1"); System.out.println(value1); } } |
出力結果
value1
このコードでは、"key1"に対応する値をgetメソッドを用いて取得し、出力しています。 
5. 要素の修正
追加した要素の値を後から修正することも可能です。
これもputメソッドを使って実行します。同じキーで新しい値をputすると、古い値が新しい値に更新されます。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import java.util.*; public class Main { public static void main(String[] args) { Map<String, String> map = new HashMap<>(); map.put("key1", "value1"); map.put("key2", "value2"); map.put("key3", "value3"); map.put("key1", "updatedValue1"); System.out.println(map); } } |
出力結果
{key1=updatedValue1, key2=value2, key3=value3}
このコードでは、"key1"の値を"updatedValue1"に更新しています。 
6. 要素の削除
不要になった要素は、removeメソッドを使って削除します。
このとき、削除する要素のキーを指定します。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import java.util.*; public class Main { public static void main(String[] args) { Map<String, String> map = new HashMap<>(); map.put("key1", "value1"); map.put("key2", "value2"); map.put("key3", "value3"); map.remove("key1"); System.out.println(map); } } |
出力結果
{key2=value2, key3=value3}
このコードでは、"key1"の要素を削除しています。 
7. ループを使った要素の参照
Map内の全ての要素を参照したいときは、ループを使います。
for-eachループを使ってkeySetメソッドで取得したキーセット、もしくはentrySetメソッドで取得したエントリーセットを巡回します。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import java.util.*; public class Main { public static void main(String[] args) { Map<String, String> map = new HashMap<>(); map.put("key1", "value1"); map.put("key2", "value2"); map.put("key3", "value3"); for (String key : map.keySet()) { System.out.println(key + ": " + map.get(key)); } } } |
出力結果
key1: value1 key2: value2 key3: value3
このコードでは、全てのキーと対応する値を出力しています。 
8. HashMap, TreeMap, LinkedHashMapの違い
最後に、Javaで利用可能なMapの実装には、HashMap、TreeMap、LinkedHashMapといったものがあります。
これらは、内部でのデータの保持方法や、要素の順序などに違いがあります。
各Mapの特徴
- HashMap: 要素の追加順序を保持しませんが、パフォーマンスが最も高いです。
- TreeMap: 要素をキーの自然な順序で保持します。ソートされた順序で要素を取得したい場合に便利です。
- LinkedHashMap: 要素の追加順序を保持します。挿入順序で要素を取得したい場合に便利です。

HashMapの使用例
まずは一般的によく使われるHashMapについて見てみましょう。
ソースコード例: HashMap
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
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("Apple", "Red"); map.put("Banana", "Yellow"); map.put("Cherry", "Red"); for (String key : map.keySet()) { System.out.println("Key: " + key + ", Value: " + map.get(key)); } } } |
出力結果
Key: Apple, Value: Red Key: Banana, Value: Yellow Key: Cherry, Value: Red

TreeMapの使用例
次に、自動的にキーをソートしてくれるTreeMapの使い方を見てみましょう。
ソースコード例: TreeMap
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import java.util.Map; import java.util.TreeMap; public class Main { public static void main(String[] args) { Map<String, String> map = new TreeMap<>(); map.put("Apple", "Red"); map.put("Banana", "Yellow"); map.put("Cherry", "Red"); for (String key : map.keySet()) { System.out.println("Key: " + key + ", Value: " + map.get(key)); } } } |
出力結果
Key: Apple, Value: Red Key: Banana, Value: Yellow Key: Cherry, Value: Red

LinkedHashMapの使用例
最後に、要素が追加された順序を保持するLinkedHashMapの使用方法を見てみましょう。
ソースコード例: LinkedHashMap
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import java.util.LinkedHashMap; import java.util.Map; public class Main { public static void main(String[] args) { Map<String, String> map = new LinkedHashMap<>(); map.put("Apple", "Red"); map.put("Banana", "Yellow"); map.put("Cherry", "Red"); for (String key : map.keySet()) { System.out.println("Key: " + key + ", Value: " + map.get(key)); } } } |
出力結果
Key: Apple, Value: Red Key: Banana, Value: Yellow Key: Cherry, Value: Red

まとめ
JavaのMap型には、HashMap、TreeMap、LinkedHashMapといった様々な種類があります。
どのMapも基本的な使い方は同じで、特徴と用途によって使い分けることができます。
HashMapは一般的によく使われ、TreeMapは自動的にキーをソートしてくれるという特徴があり、LinkedHashMapは要素が追加された順序を保持します。
これらを理解し、目的に合わせて適切なMapを選ぶことが大切です。
最後まで読んで頂き、ありがとうございました。少しでもお役にたてたなら幸いです!

人生が変わるオンラインサロン!
月3万副業収入が得られる!Mサロン!31日間無料体験!JavaのStreamAPIをさらに学びたい方へ
JavaのStreamAPIを理解して頂くために参考書を執筆致しました!
StreamAPIの演習問題はこちらの参考書に載せているので、問題を解いて理解を深めたい方はこちらの参考書チェックしてください!
下記の画像をクリック!!kindleunlimitedの会員であれば無料で見れます!
⇩初心者向け ⇩中級者向け
JavaでChatGPTAPIを使ってブログ作成を自動化しませんか?