🤖

【これだけは覚えよう】頻出&有用なデータ構造【図解あり】

2024/08/27に公開

はじめに

皆さんこんにちは。
今回は知っていると便利なデータ構造をご紹介します。

データ構造とは、複数のデータをまとめて扱うための仕組みです。データ構造は複数種類あり、それぞれ特徴が異なります。プログラミングでは特徴を理解して使い分ける必要があります。

今回の内容は次のような方にオススメです。

こんな人にオススメ

  • 配列や連想配列の特徴を知りたい
  • 頻繁に利用するデータ構造を知りたい

初めて学習する方にも分かるように、丁寧に解説していきます。
プログラミングに慣れてきた方も、是非一度目を通していただけると嬉しいです。

😋 データ構造を知るとプログラムの工夫の幅が広がります♪

配列(リスト)

まずポイントをチェック

  • 複数のデータを順序付けして、まとめた形式
  • 先頭から0,1,2…と番号が振られる
  • 番号を指定することで、該当の値を取り出すことができる

配列とは、複数のデータを順序付けして、まとめた形式です。
配列は、最も頻繁に利用されるデータ構造です。

配列の構成要素

配列に格納した値のことを要素と呼びます。
要素は添字と呼ばれる番号で管理されており、先頭から0,1,2…と番号が振られます。
要素を取り出す場合は、添字を指定することで該当の要素を取り出すことができます。

また、配列は要素の順番を保証する特徴を持っています。つまり、その配列を使う時はいつでも、同じ順番で要素を取り出すことができます。

😋 配列は複数の値を順序付けしてまとめたものです♪

配列を利用することで複数のデータをまとめられるため、コード上の行数を抑えることができます。また、データを1つのまとまりとして意味付けをすることで、コードが理解しやすくなります。

🍕 例えば、バラバラの変数に”カレー”・”ラーメン”・”ハンバーグ”と定義するよりも、メニューリストという配列に、それぞれの値をまとめる方が意味を理解しやすくなります。今回の例は、お店の食事メニューのリストであると理解できます。

😋 配列は意味付けとしても利用します♪

配列と繰り返し処理

配列は、繰り返し処理と一緒によく利用されます。
配列内の要素全てを画面表示したり合計値を計算するなど、一括で処理したい場合に便利です。

配列には、利用上の重大な注意点があります。
それは、配列には同じジャンルの値を格納するということです。

🍕 例えば、先程のメニューリストには、文字列型の食べ物名を格納します。そして、それ以外の値を入れてはいけません。当然、数値型の値を混ぜてはいけませんし、文字列型でも食べ物名以外を混ぜてはいけません。その時点で、メニューという意味が揺らいでしまい、理解しづらくなってしまうためです。

😋 配列には同じジャンルの要素だけをまとめましょう♪

また、この同じジャンルというルールは、バグを避けるためにも非常に重要です。
配列を繰り返し処理する際に、文字列型の中に数値型が混入していると、データ型の違いが原因でエラーになることがあります。

連想配列(キーバリュー形式)

まずポイントをチェック

  • 配列とは異なり、値はキーで管理される
  • キーを指定して値を取得する
  • まとまりから個別の値を頻繁に利用する際に便利

連想配列とは、まとめた各データに名前付けして管理する形式です。
名前をキー、値をバリューと呼ぶことから、キーバリュー形式と呼ぶこともあります。

連想配列は複数の値をひとまとめにする仕組ですが、配列とは異なり値はキーで管理されます。

🍕 例えば、首都を管理する場合、日本と東京・アメリカとワシントンDC・フランスとパリ、のように国名をキーにして首都を値として管理します。この場合、国名を指定することで首都を取り出すことができます。

😋 キー指定で値を取り出せるので、個別の値を頻繁に利用する際に便利です♪

配列の場合は番号で値が管理されているため「何番目にどの値があるか」をコードから読み解かなければ目的の値を取得できません。
その点、連想配列はキーを指定すれば良いので、個別の値が参照しやすくなっています。

😋 配列は番号、連想配列はキーで管理してます♪

おわりに

皆さん、お疲れ様でした。
ここまでご覧いただき、ありがとうございました。

配列と連想配列は、どちらも複数の値をひとまとめにする仕組でした。実はこういったデータ構造を使わなくても、コードは書けます。しかし、とても理解しづらいものになってしまいます。プログラムは沢山のデータを扱いますが、そのデータを理解しやすくまとめることも重要です。プログラムは、動くだけでなく理解しやすいことも重要なので、データ構造も是非身につけましょう。

😋 これからもプログラミング学習頑張りましょう♪

Discussion