Javaのデータ構造
データ構造の代表例
・配列
・連結リスト
・スタック
・キュー
・グラフ
・ツリー
・ハッシュテーブル
配列のメリット/デメリット
メリット
・添え字(=インデックス、キー)で個々の値を区別してアクセスできる
デメリット
・値の挿入や削除が苦手
配列同士の代入
参照渡し
コレクションフレームワークとは
「広く受け入れられ確立した共通部品」としてのデータ構造クラスのAPI群
コレクションフレームワーク2分類
・Collection系
・Map系
Collectionとは
要素の集まり
Collection系2分類
・List系
・Set系
Listのメリット
事前にサイズを決める必要がない(メモリの許す限り要素を追加できる)
List
・ArrayList :配列
・LinkedList:連結リスト
ひとまずArrayListを選んでおけばいい
Setデータ構造とは
・重複要素を排除するコレクション(同じ要素を後から追加しても無視する)
・内部で順序を管理しない(インデックスによる要素アクセス、要素削除ができない)
Collectionに関連する型
・Iterable型 :抽象型:反復子を提供できる何か
・Collection型:抽象型:要素の集まり
・List型 :抽象型:順序付きの要素の集まり
・ArrayList型 :実装型:配列データ構造で実装したList
・LinkedList型:実装型:連結リストデータ構造で実装したList
・Set型 :抽象型:重複のない要素の集まり(Set)
・HashSet型 :実装型:ハッシュ値を利用したSetの実装
実装型/抽象型
・実装型:newできる
・抽象型:newできない
連結リストとは
ひとつひとつの値を「エントリ」として保持しつつ、各エントリが「自分の次に位置するエントリ」を知っている、という構造
連結リストのメリット/デメリット
メリット
・追加や削除の効率において優れている
デメリット
・ランダムアクセス(例:150番目の値)が苦手
スタックとは
入れ物の中に要素を積み上げていくようなデータ構造。先入れ後出し
プッシュ/ポップ
・プッシュ(push):要素を投入すること
・ポップ(pop) :要素を取り出すこと
キューとは
パイプの中に要素が順番に並ぶようなデータ構造。先入れ先出し
エンキュー/デキュー
・エンキュー(enqueue):データを投入すること
・デキュー(dequeue) :データを取り出すこと
Mapデータ構造とは
・ディクショナリ(辞書)と呼ばれるデータ構造
・辞書における単語の役割を「キー」、説明文の役割を「バリュー(値)」と呼ぶ
・ジェネリクスは型を2つ指定する(キーとバリュー)