「しう」がJavaを勉強していて学んだことを書いています。
アウトプットをすることで、より定着しやすいと聞いたからです。
「しう」の備忘録的なものだと思ってください。
そして、ブログで書いたことが他の人(特にJava初学者)の役に立てばいいなと思っています。
記事の信頼性:IT企業で働き始めた「しう」がプログラミングについて学習したことを記載しています。
HashMap使い方【Java】
JavaでのHashMapの使い方について見ていきましょう。
HashMapには様々なメソッドが用意されています。
ここでは
① | HashMapの宣言 |
② | put【キーと値のペアの追加】 |
③ | put【値の上書き】 |
④ | putIfAbsent【指定したキーがない時だけ上書き】 |
⑤ | get【指定したキーに対応する値を取得する】 |
⑥ | getOrDefault【指定したキーがない時の値も決められる】 |
⑦ | size【登録されているペアの数】 |
⑧ | isEmpty【ペアが全くないかの確認】 |
⑨ | containsKey・containsValue【キー・値が含まれてるかの確認】 |
⑩ | clear・remove【ペアの削除】 |
⑪ | keySet【一覧を取得する】 |
について見ていきましょう!
HashMapの宣言【Java】
まずHashMapの宣言をおこないましょう。
HashMapでは型名と変数名が必要になります。
HashMap<キーの型名、値の型名> マップの変数名 = new HashMap<キーの型名、値の型名>();
キーの型がString、値の型がIntegerであれば次のようになります。
また、現在では右辺の<>の中のデータ型は省略可能です。
そして、HashMap は Map インターフェースを実装したクラスになります。
そのため、左辺でHashMapを使っていますが、Mapにしてもいいということです。
いつもと書き方が違っても、混乱しないようにしましょう。
※この書き方だとHashMapに用意されて、Mapに用意されていないメソッドは使うことができません。
気を付けてくださいね。
put【キーと値のペアの追加】
ここまでで、HashMapの用意ができました。
しかし、HashMapの中は1つも要素がありません。
要素を追加するには、putメソッドを使います。
マップ変数名.put(キーの名前、値の名前);
上で宣言したmapを使うと、以下のようになります。
この時に気を付けることは、宣言時の<キーの型、値の型>に当てはまらないものは要素に追加できません。
先ほど、<String, Integer>で宣言しているので、今回追加できるのはキーにはString型、値の型にはInteger型だけです。
put【値の上書き】
一度キーに入っているものは、追加することはできません。
既に登録されているキーと同じものを入力した場合は、値が上書きされます。
つまり、putの場合は次の2パターンに分かれます。
putIfAbsent【指定したキーがない時だけ上書き】
マップ変数名.putIfAbsent(キーの名前、値の名前);
putでは指定したキーがすでにある場合は上書きされます。
putIfAbsentでは、既にキーが入っている時は上書きがされないです。
このように上書きをしたくない場合はputIfAbsentメソッドを利用しましょう。
get【指定したキーに対応する値を取得する】
putメソッド、putIfAbsentメソッドで要素の追加ができるようになりましたね。
その要素を取り出すときに使うメソッドがgetメソッドです。
マップ名.get(キーの名前);
ここでも先ほど宣言したmapを使ってみましょう。
getメソッドの引数にキーの名前を指定しています。
“数学”はputメソッドで登録されているので、ペアの値の80が表示されます。
“国語”は登録されていないので、ペアの値はnullが表示されます。
getOrDefault【指定したキーがない時の値も決められる】
getメソッドで当てはまるキーがない場合には、nullが返ってきます。
null以外を表示したい場合は、getOrDefaultメソッドを利用しましょう。
マップ名.getOrDefault(キーの名前, 指定したキーがない場合に表示するもの)
使い方は以下のようになります。
このように、null以外を表示させることができます。
size【登録されているペアの数】
マップに登録されているキーと値のペアの数を取得するにはsizeメソッドを利用します。
マップ名.size()
使い方は以下の通りです。
最初はmap.size()=0になります。
その後、putメソッドで登録しているペアが3つなので
2回目のmap.size()=3
になります。
このようにsizeメソッドを利用することで、登録されているペアの数を取得できます。
isEmpty【ペアが全くないかの確認】
マップが空か判定したいときはisEmptyメソッドを利用します。
マップ名.isEmpty()
使い方は以下の通りです。
一度でもputメソッドで登録すると、isEmptyメソッドではfalseが返ってきます。
containsKey・containsValue【キー・値が含まれてるかの確認】
キーに指定したものが含まれているか調べるときは、containsKeyメソッドを使います。
値に指定したものが含まれているか調べるときは、containsValueメソッドを使います。
マップ名.containsKey()
マップ名.containsValue()
キーはputメソッドで登録した時の左側
値はputメソッドで登録した時の右側のものでしたね。
このように、ペアがあるかどうかはisEmptyメソッド、
キーや値があるか調べるときはcontainsKeyメソッド、containsValueメソッドを利用しましょう。
remove・clear【ペアの削除】
登録したペアの削除をしたい時にはremoveメソッドやclearメソッドを利用します。
マップ名.remove(削除したいキーの名前)
マップ名.clear()
指定したペアだけ削除するときはremoveメソッドを
全てのペアを削除したいときにはclearメソッドを利用しましょう。
clearメソッドを利用するとすべて削除してしまうので、使うときには気を付けてくださいね。
keySet【一覧を取得する】
登録されたキーの一覧を確認したいときには、keySetメソッドを利用します。
マップ名.keySet()
実際に使う場合は次のようになります。
この場合に、表示されるのはキーの一覧です。
値の一覧ではないので、気を付けるようにしましょう。
JavaでのHashMapとは何か
そもそも、HashMapとは何なのでしょうか?
HashMapはコレクションフレームワークと呼ばれるものの一種です。
以前紹介したArrayListクラスのの兄弟みたいな位置づけでもあります。
☟ArrayListの記事はコチラから
また、HashMapの特徴として、キーの重複が許されません。
putメソッドで重複してる場合は、上書きされてしまいます。
ちなみに、HashMap クラスは java.util パッケージに含まれています。
利用する場合は java.util.HashMapをインポートしてください。
ここで差がつくポイント【JavaでのHashMap】
HashMapはラッパークラスのみ
HashMapでは基本型の利用をすることができません。
基本型とはint、double、booleanなどが当てはまります。
つまり、HashMap <int>、 HashMap <double>、 HashMap <boolean>
などの使い方はできません。
この場合は
HashMap <Integer>、 HashMap <Double>、 HashMap <Boolean>
というように、ラッパークラスを用いてあげましょう。
keySetでの値の一覧表示
HashMapでキーの一覧表示は、このブログで紹介しました。
では、値の表示したい場合はどうすればいいのでしょうか?
forとkeySetメソッドを使って、次のようにすれば表示されます。
この例では”数学”のペアである80が最初に表示されます。
そして、次の”国語”のペアである60が2番目に表示されます。
この書き方は便利なので、覚えておきましょう。
まとめ
いかがでしたか?
今回は
- HashMapの使い方
- HashMapとは何か
- ここで差がつくポイント
をご紹介しました。
参考になれば嬉しいです。
Javaの勉強、頑張ってくださいね!
☟あわせて読みたい 「しう」のオススメブログ
コメント