プロになるJavaで「データ構造」について学びました

はじめに
プロになるJavaという参考書の第8章の「データ構造」について学びました。
学んだ内容は、リスト・配列・レコード・辞書などです。
JShellを使用して1行1行確認しながら進めました。
JShellは便利ですね。
リスト
用語説明
用語 | 説明 |
---|---|
イミュータブル | 不変ということ。 |
イミュータブルなリスト
tokyo、nagoya、osakaという文字列のリストが作成できました。

getメソッドで、リストの中身を取り出すことができます。
先頭から0、1、2と番号が振られているので、2番目のnagoyaを取り出したいときは、getメソッドの引数に1を指定します。

こちらのリストは、変更を加えることができません(イミュータブル)。
試しに、addメソッドでsaitamaを追加しようとすると、例外が発生しました。

変更可能なリスト
ArrayListであれば、変更できます。
まずは、citiesという空の配列リストを作成します。

addメソッドで、saitamaを追加することができました。

sizeメソッドでは、リストの中身の数を数えることができます。

setメソッドで、中身を書き換えることができます。

ジェネリクス
用語説明
用語 | 説明 |
---|---|
ジェネリクス | 扱う型を<>で示したもの。 例: ArrayList<String> cities = [fukuoka] の <String> |
/v で、型を調べることができます。

Stringは文字列の型なので、addメソッドで数字を渡してしまうと、エラーが出ます。

また、cityNamesというリストを作成し、

citiesという配列リストのコンストラクタにcityNamesを渡すと(<>はダイヤモンドオペレーターと言います)、

型を確認したときに、<String>になっています。

ジェネリクスの型推論が行われています。
ラッパークラス
整数の基本形は int ですが、ジェネリクスでは、<int> ではなく <Integer> となります。

これをラッパークラスと言います。
配列
リストと同様に同じ型の値をまとめて扱う仕組みです。
初期化
new 型 [要素の数] で配列を作成できます。

最初の要素を指定した初期化
new 型 [] {要素} で、初期化した状態で配列を作成できます。

要素の取得
以下のようにして、配列の要素を変更させることができます。配列のインデックス番号は0から始まるので、最初から2番目は1となります。

多次元
多次元の配列を作成することもできます。
以下のようにすると、要素数が3の配列が2つ生成されます。

最初に0、次に2を指定すると、最初の配列の3番目の要素が取得できます。
取得した要素に10を代入すると以下のようになりました。

レコード
レコードでは違う型の値をまとめて扱うことができます。
定義の仕方
record レコード名(コンポーネント名, コンポーネント名, …){} でレコードを定義することができます。

オブジェクトの生成
new レコード名(コンポーネントの値, コンポーネントの値, …) でオブジェクトを生成できます。

以下のように、コンポーネント名を指定して値を取り出します。

辞書
「本はbook」のように、値を保存するときに map が便利です。
イミュータブルなmap
変更できないmapは以下のように定義します。

以下のように値を取り出すことができます。

変更可能なmap
HashMapは、変更可能なmapです。ジェネリクスでは、キーと値の型を指定します。

putメソッドを使用して、中身を入れます。

コメントを残す