プロになる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メソッドを使用して、中身を入れます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です