Mapの使い方

【Java】HashMapの要素の追加、検索、修正、削除、ループ、 TreeMap, LinkedHashMapの違いを解説します。

1. JavaのMap型について

JavaのMap型は、キーと値のペアでデータを管理するコレクション型の一つです。
キーと値のペアはエントリと呼ばれ、このエントリを保存し、キーを基にした検索などが可能となります。
特に、HashMap、TreeMap、LinkedHashMapなどの具体的なクラスがMapインターフェースを実装しており、それぞれ特性があります。

サルモリ
キーと値のペアでデータを保存するんだな。それぞれどんな特性があるんだ?

2. HashMap, TreeMap, LinkedHashMapの特性

まずはそれぞれの特性を知っておくことが大切です。

  • HashMapは、一般的な用途で最も使用されるMapです。要素の順序は保証されませんが、データの追加・取得が高速です。
  • TreeMapは、キーの自然順序によって要素がソートされます。データの追加・取得はHashMapよりも遅くなりますが、ソートされたMapが必要な場合に有用です。
  • LinkedHashMapは、エントリが追加された順序またはアクセスされた順序で要素を保持します。順序付きのMapが必要な場合に使用します。
サルモリ
なるほど、用途によって使い分けるんだな!

Mapの作成と要素の追加

では、具体的にMapの作成と要素の追加方法について見ていきましょう。

ソースコード例



 出力結果
{key1=value1, key2=value2, key3=value3} 
このコードでは、String型のキーと値を持つHashMapを作成し、3つの要素を追加しています。
putメソッドを使用してキーと値のペアをMapに追加します。
サルモリ
putメソッドで追加するんだね!それで、その要素がちゃんと追加されているか確認できる?

もう1つ例をみてみましょう。

ソースコード例2



 出力結果
{Apple=100, Banana=200, Cherry=300}
サルモリ
こんな感じでMapに値を追加していくんだね!
Java言語のStreamAPIを徹底的に学びたい方は画像をクリックしてご覧ください!
KindleUnlimited会員であれば、全ての本をご覧頂けます。 StreamAPIを理解すれば、Javaの世界が変わる 第1版

Mapのキーを取得する

JavaのMapインターフェースは、キーのセットを取得するためのkeySetメソッドを提供しています。

以下にその使用例を示します。

サルモリ
このkeySetメソッドさえ覚えておけば、Mapのキーを取得するのはとっても簡単だよ!

ソースコード例2



 出力結果
[Apple, Banana, Cherry]
サルモリ
あら簡単!keySetメソッドでMapのキーが取得できるんだね!

Mapの要素の取得

もちろん、追加した要素を取得することも可能です。
その際には、キーを指定してgetメソッドを使います。それでは実際に見てみましょう。

ソースコード例



 出力結果
value1 
このコードでは、"key1"に対応する値をgetメソッドを用いて取得し、出力しています。
サルモリ
あ、すぐに値を取り出せるんだね!

Mapの取得と追加

JavaのMapにデータを追加し、取得をしてみましょう。

サルモリ
それでは早速、コードを見てみよう!

ソースコード例



 出力結果
Fruit
サルモリ
putメソッドでデータを追加して、getメソッドでデータを取得できるんだね!

Mapの要素の修正

追加した要素の値を後から修正することも可能です。
これもputメソッドを使って実行します。同じキーで新しい値をputすると、古い値が新しい値に更新されます。

ソースコード例



 出力結果
{key1=updatedValue1, key2=value2, key3=value3} 
このコードでは、"key1"の値を"updatedValue1"に更新しています。
サルモリ
なるほど、同じキーでputすると更新になるんだね!

Mapの要素の削除

不要になった要素は、removeメソッドを使って削除します。
このとき、削除する要素のキーを指定します。

ソースコード例



 出力結果
{key2=value2, key3=value3} 
このコードでは、"key1"の要素を削除しています。
サルモリ
あ、"key1"が無くなった!これで要らない要素を消せるんだね!

もう1つremoveメソッドの例をみてみます。

削除するには、削除したいデータのキーを指定します。

サルモリ
それでは、削除の例を見てみよう!

ソースコード例



 出力結果
null

サルモリ
removeメソッドで指定したキーのデータが削除されてるね!

Mapのループを使った要素の参照

Map内の全ての要素を参照したいときは、ループを使います。
for-eachループを使ってkeySetメソッドで取得したキーセット、もしくはentrySetメソッドで取得したエントリーセットを巡回します。

ソースコード例



 出力結果
key1: value1 key2: value2 key3: value3 
このコードでは、全てのキーと対応する値を出力しています。
サルモリ
全ての要素を見ることができるんだね!それなら、どんなデータが入っているか一目瞭然だね!

 

Mapの検索

Mapにキーが存在するかどうかを確認するには、containsKeyメソッドを使用します。

これにより、特定のキーがMapに存在するかどうかをチェックできます。

サルモリ
それでは、検索の例を見てみよう!

ソースコード例



 出力結果
true
false
サルモリ
containsKeyメソッドで、"Apple"は存在するけど、"Banana"は存在しないことがわかったね!

Setの基本

MapのついでにSetも覚えてしまいましょう。

Setは一意の要素のコレクションで、重複する要素を持つことはありません。

次の例では、String型の値を持つSetを作成します。

ソースコード例




 出力結果
Apple
Banana
Cherry

サルモリ
"Apple"を2回addメソッドで追加しているけど、出力結果を見ると"Apple"は1回しか表示されていないね。それがSetの特性だよ!

キーの存在有無の判定を行うには、ContainsKeyメソッドを使います。下記の記事をチェック!

【Java】mapでよく使用するcontainskeyメソッドの使い方を解説します。

Java MapのcontainsKeyメソッドについての完全ガイド JavaでMapを扱う際、特定のキーが存在するかどうかを確認するためにはcontainsKeyメソッドを使用します。 この記事では ...

続きを見る

3. HashMap, TreeMap, LinkedHashMapの違い

最後に、Javaで利用可能なMapの実装には、HashMap、TreeMap、LinkedHashMapといったものがあります。
これらは、内部でのデータの保持方法や、要素の順序などに違いがあります。

各Mapの特徴

  • HashMap: 要素の追加順序を保持しませんが、パフォーマンスが最も高いです。
  • TreeMap: 要素をキーの自然な順序で保持します。ソートされた順序で要素を取得したい場合に便利です。
  • LinkedHashMap: 要素の追加順序を保持します。挿入順序で要素を取得したい場合に便利です。
サルモリ
これでMapの違いも分かったね!自分のニーズに応じて適切なものを使用しよう!

HashMapの使用例

まずは一般的によく使われるHashMapについて見てみましょう。

ソースコード例: HashMap



 出力結果
Key: Apple, Value: Red Key: Banana, Value: Yellow Key: Cherry, Value: Red 
サルモリ
これでHashMapの作成と要素の取得ができたよ!

TreeMapの使用例

次に、自動的にキーをソートしてくれるTreeMapの使い方を見てみましょう。

ソースコード例: TreeMap



 出力結果
Key: Apple, Value: Red Key: Banana, Value: Yellow Key: Cherry, Value: Red 
サルモリ
これでTreeMapの使い方もわかったね!

LinkedHashMapの使用例

最後に、要素が追加された順序を保持するLinkedHashMapの使用方法を見てみましょう。

ソースコード例: LinkedHashMap



 出力結果
Key: Apple, Value: Red Key: Banana, Value: Yellow Key: Cherry, Value: Red 
サルモリ
LinkedHashMapは追加順序を保つから、順序が大事なときに使うと便利だよ!

まとめ

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 ...

続きを見る

-Mapの使い方

Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

Powered By
Best Wordpress Adblock Detecting Plugin | CHP Adblock