1. JavaのMap型について
JavaのMap型は、キーと値のペアでデータを管理するコレクション型の一つです。
キーと値のペアはエントリと呼ばれ、このエントリを保存し、キーを基にした検索などが可能となります。
特に、HashMap、TreeMap、LinkedHashMapなどの具体的なクラスがMapインターフェースを実装しており、それぞれ特性があります。
2. HashMap, TreeMap, LinkedHashMapの特性
まずはそれぞれの特性を知っておくことが大切です。
- HashMapは、一般的な用途で最も使用されるMapです。要素の順序は保証されませんが、データの追加・取得が高速です。
- TreeMapは、キーの自然順序によって要素がソートされます。データの追加・取得はHashMapよりも遅くなりますが、ソートされたMapが必要な場合に有用です。
- LinkedHashMapは、エントリが追加された順序またはアクセスされた順序で要素を保持します。順序付きのMapが必要な場合に使用します。
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に追加します。
もう1つ例をみてみましょう。
ソースコード例2
1 2 3 4 5 6 7 8 9 10 11 12 |
import java.util.HashMap; import java.util.Map; public class Program { public static void main(String[] args) { Map<String, Integer> map = new HashMap<>(); map.put("Apple", 100); map.put("Banana", 200); map.put("Cherry", 300); System.out.println(map); } } |
出力結果
{Apple=100, Banana=200, Cherry=300}
KindleUnlimited会員であれば、全ての本をご覧頂けます。 StreamAPIを理解すれば、Javaの世界が変わる 第1版
Mapのキーを取得する
JavaのMapインターフェースは、キーのセットを取得するためのkeySetメソッドを提供しています。
以下にその使用例を示します。
ソースコード例2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import java.util.HashMap; import java.util.Map; import java.util.Set; public class Program { public static void main(String[] args) { Map<String, Integer> map = new HashMap<>(); map.put("Apple", 100); map.put("Banana", 200); map.put("Cherry", 300); Set keys = map.keySet(); System.out.println(keys); } } |
出力結果
[Apple, Banana, Cherry]
Mapの要素の取得
もちろん、追加した要素を取得することも可能です。
その際には、キーを指定して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メソッドを用いて取得し、出力しています。 Mapの取得と追加
JavaのMapにデータを追加し、取得をしてみましょう。
ソースコード例
1 2 3 4 5 6 7 8 9 10 |
import java.util.Map; import java.util.HashMap; public class Program { public static void main(String[] args) { Map<String, String> map = new HashMap<>(); map.put("Apple", "Fruit"); System.out.println(map.get("Apple")); } } |
出力結果
Fruit
Mapの要素の修正
追加した要素の値を後から修正することも可能です。
これも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"に更新しています。 Mapの要素の削除
不要になった要素は、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"の要素を削除しています。 もう1つremoveメソッドの例をみてみます。
削除するには、削除したいデータのキーを指定します。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 |
import java.util.Map; import java.util.HashMap; public class Program { public static void main(String[] args) { Map<String, String> map = new HashMap<>(); map.put("Apple", "Fruit"); map.remove("Apple"); System.out.println(map.get("Apple")); } } |
出力結果
null
Mapのループを使った要素の参照
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
このコードでは、全てのキーと対応する値を出力しています。
Mapの検索
Mapにキーが存在するかどうかを確認するには、containsKeyメソッドを使用します。
これにより、特定のキーがMapに存在するかどうかをチェックできます。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 |
import java.util.Map; import java.util.HashMap; public class Program { public static void main(String[] args) { Map<String, String> map = new HashMap<>(); map.put("Apple", "Fruit"); System.out.println(map.containsKey("Apple")); System.out.println(map.containsKey("Banana")); } } |
出力結果
true
false
Setの基本
MapのついでにSetも覚えてしまいましょう。
Setは一意の要素のコレクションで、重複する要素を持つことはありません。
次の例では、String型の値を持つSetを作成します。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import java.util.Set; import java.util.HashSet; public class Program { public static void main(String[] args) { Set set = new HashSet<>(); set.add("Apple"); set.add("Banana"); set.add("Cherry"); set.add("Apple"); for(String fruit : set) { System.out.println(fruit); } } } |
出力結果
Apple
Banana
Cherry
キーの存在有無の判定を行うには、ContainsKeyメソッドを使います。下記の記事をチェック!
-
【Java】mapでよく使用するcontainskeyメソッドの使い方を解説します。
Java MapのcontainsKeyメソッドについての完全ガイド JavaでMapを扱う際、特定のキーが存在するかどうかを確認するためにはcontainsKeyメソッドを使用します。 この記事では ...
続きを見る
3. 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を選ぶことが大切です。
最後まで読んで頂き、ありがとうございました。少しでもお役にたてたなら幸いです!
こちらもCHECK
-
【Java】3要素のmap作成する方法 キーに対して、リストを定義しよう!
Java Mapで3要素を扱う方法! Java Mapとは Java Mapはキーと値のペアのコレクションで、これは異なるデータ型の組み合わせを許します。 今回は、Java Mapのキーに2つのStr ...
続きを見る