BLOG

【プログラマー研修 Java】ひっしーの記録3

こんにちは!

緊急事態宣言

が出てからのほうが天気よくなってないかな?と思う今日この頃、、、
もともとインドア派なのでそこまで今の状況に困ってはいないですが、スーパーの品薄には困っていますね。。。

特に困るのがトイレットペーパーです。
ロールが1個、また1個と減るたびにビクビクしながらトイレしてます。。。

家に引きこもる時間が多くなった現状で地味に活気づいているのはゲーム業界かもしれないですね!

このタイミングで発売したFF7リメイク(4/10発売)はかなり追い風を受けていることでしょう!
FF7の魔力がはたいているんでしょうか?(笑)

私も体験版をプレイしたんですが、かなり出来が良くて近年まれに見ぬ良ゲーだと思いました(ステマじゃないです)。

でも、スクエニ社員にもコロナが発症ということでニュースになっていましたね。。
あんまり大事に至らなければいいなとひそかに願っております。

さて、本日はJavaのコレクションについてです。

コレクション

コレクションとは??

List、Set、Mapインターフェイスの総称 です。
配列と違って、要素数が可変長で後からの変更が容易なんですね。
(配列と同じように扱えます。)

代表的なものとしては・・・
List:ArrayList
→可変長な配列で要素を足した順番に格納される
格納されている要素に順番がある。

Set:HashSet
→ ArrayListと同様に可変長だが、要素に順番がない。
そのため、同じ要素は入れることが出来ない。

Map:HashMap
→ HashSet のように要素に順番はないが、添え字をつけられるので同じ要素も格納できる

があります!!
この、コレクションですが、指定できる型が参照型だけなんです!
ココかなり重要です。。
安易に数字入れたいからといってint型を指定することが出来ないのでかなり混乱しました。。。

今回はこの中でも特にややこしかったHashMapをピックアップします!

HashMapについて

上でも説明したように要素と添え字を同時に格納するので、同じ要素でも複数格納することが出来ます。

また、 ArrayList は要素の判別を順番で行うんですが、 HashMap は自分で指定した添え字に対応したデータとして格納することが出来るんです!

イメージとしては以下の票を配列に入れている感じです。

例:ArrayList

格納した順番
(中身を呼び出すときに使う)
格納した要素
1ジロウ
2イチロウ

例:HashMap

添え字
(中身を呼び出すときに使う)
格納した要素
長男イチロウ
長女ハナコ

ArrayListでは入れた順番でしか呼び出せないので何番目に何を追加したのかを覚えておく必要があるんですが、HashMapでは呼び出しキーを自由に設定できるので後で「長男は誰だっけ?」みたいになっても「長男」というワードから要素を引っ張ってこれるんですね!

便利なので実際の使用方法を見ていきましょう!

//HashMap<添え字の型, 要素の型> 変数名 = new HashMap<>();
HashMap<String, String> map = new HashMap<>();

//HashMapのputメソッドで要素を追加します
map.put("剣","ソード");
map.put("盾","シールド");
map.put("槍","ランス");

変数の宣言と変数mapの中身を追加してます。
ソードは剣としてシールドは盾としてランスは槍として格納されました。

格納された要素を呼び出すには以下のようにします。

//printlnメソッドで格納された要素を表示します。
//HashMap型の変数.get(添え字)で対応した要素を呼び出します
System.out.println(map.get("剣"));

これで剣に紐づいているソードを呼び出すことが出来ます!

このように、要素に対してのキーを自由に設定することが出来るんです!
便利ですね!

ですが、型を追加するときには注意しないといけないこともあります。

それは、同じ添え字は使えないということです!
すでに格納されている要素の添え字と同じ添え字で新たに要素を追加しようとすると・・・・

上書きされます!!

こんな感じです。

//HashMapのputメソッドで要素を追加します
map.put("剣","ソード");
map.put("盾","シールド");
map.put("槍","ランス");

//同じ添え字の要素は後から追加されたほうに上書きされます
//ここではソード→スーパーソードに上書きされます
map.put("剣","スーパーソード");

剣で入れていたソードが後からきた剣のスーパーソードに置き換わるんですね。
注意して使わないと思わぬ結果になることもありそうですね。

所感として・・・

コレクションはいろいろなメソッドが用意されており、使いたい機能に合ったメソッドを覚える必要があるので大変です。

一朝一夕で覚えるのは難しいと思うので、いろいろなソースコードを書いて体で覚えるのがよさそうだなと思います。

最後に(まとめ)

今回のコレクションについて重要なポイントをおさらいしましょう。

・配列を可変長にしたもの

・参照型のみを扱うことが出来る

・List,Set,Mapの特徴

ArrayList→順番で管理 
HashSet→管理しない
HashMap→添え字で管理

今回紹介したもの以外にもコレクションにはいろいろなメソッドがあります。
用途に応じて便利な機能があると思うので皆さんも一緒に覚えましょう

(私はより一層頑張って覚えなければ・・・覚え悪いので)

今回は以上になります!
ではまた!

BLOGトップへ戻る