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