【初心者向け解説】配列とハッシュの違いを説明できますか?

メンターをしていて、配列とは何かと聞いたら説明できる人は多いですが、ハッシュを聞いたらみなさん固まってしまいます。

ハッシュも配列と同じくらい使用頻度が高いので絶対に2つとも覚えておくべきです。

なので、今回はこの2つを違いに重点を置きながら説明したいと思います。

なお、配列とハッシュというのは多言語で共通されている概念ですが、今回はRubyを主に考えてます。

配列

まず配列からですが、配列は一言でただのリストです。

(英語ではプログラミング言語によってですが、そのままリストと呼ばれてます)

配列はリストなので、複数個の情報を保存することができます。コードでは[]で表わせられることが多いです。

[0,1,2,3]
["a", "b", "c"]

今回では例として学生の超少人数数のクラスの名前の配列を見てみましょう

まず、

配列というのは2つの要素で出来ています。

インデックス(index)と値です。

値というのは実際に配列に入っているもので、今回だと各生徒の名前が配列の値です。

インデックスは配列の値が保存されたときに、それぞれに振り分けられる数字の事です。

数字は配列に保存された順に0から振り分けられます。

 

インデックスはどうして必要なのか?

という疑問が浮かぶと思いますが、これにはもちろん明確な理由があります。

 

インデックスは配列から値を取り出すために必要になります

 

配列はリストとしていろんな値を保存していますが、

名前を表示したいなどの理由で配列から値を取得しないといけません。

それを可能にするのがインデックスです。

つまり、「何番目に入れた値を取って」といったように値を取得することができます。

 

# 配列は英語でarrayです
# index 0 1 2 3
array = ["五石さん", "山根さん", "堀江さん", "佐藤さん"]

array[0]
# => 五石さん

array[1]
# => 山根さん

 

ハッシュ

Ruby以外のプログラミング言語では辞書(ディクショナリー)

JSではオブジェクトと呼ばれてます。JSONというデータ保存形式もかなり似ています。

厳密には別物ですが、ほとんどのケースでは一緒と考えていいです。

 

ハッシュも情報をリストのように保存するもので間違いありません。

ただ、配列との大きな違いは

 

名前(キー)をつけて値を保存できることにあります。

 

配列ではインデックスと値でしたが、

 

ハッシュではキーと値(バリュー)になります。

 

{key1: value1, key2: value2}

# 見やすくコンマのところで改行すると
{key1: value1,
key2: value2}

 

このようなコードになります。配列の [] ではなくハッシュでは {} を使用してますね。

先程の例を使用して説明しますと、

 

出席番号をキーとして使用しています。

なので、保存した順番は関係なくハッシュから生徒の名前を取り出すことができるようになります。

 

students = {10: "五石さん", 30: "山根さん", 22: "堀江さん", 15: "佐藤さん"}

students[:22]
# => "堀江さん"

students[:30]
# => "佐藤さん"

 

取り出す際に、キーの前にコロン(:) がついたり少し配列とは違いますが

基本的な考え方は同じだということがわかると思います。

 

 

いかがだったでしょうか、これが配列とハッシュの違いになります。

今回の記事ではこれらのデータの型と簡単な取り出し方についてはお話しましたが、

まだまだ、要素の追加の仕方などカバーできていないところが多数あります。

ですが、それらは言語に依存するものなのでご使用のプログラミング言語にて都度お調べいただければと思います。

大切なのは配列とハッシュの違いを理解してご自身で調べるようになることだと思い、この記事を書かせていただきました。

これからのプログラミングの学習頑張ってください!

 


 

Naggi Club(ナギ倶楽部)ではプログラミング学習をサポートしております。

現役のシリコンバレーエンジニアが豊富な経験と知識により、挫折しないプログラミング学習を全力で提供します。

プログラミングに関する技術的な質問からスケジュール管理やモチベーション維持まで精一杯サポートさせていただきます。

詳しい情報はこちらからよろしくおねがいします。

 

もし興味があり、ご登録の頂ける場合はこちらのリンクから登録いただけると500円の割引がございます!

 

 

大阪桐蔭高校中退。TECH::CAMP梅田でプログラミングを学習する。 同じくTECH::CAMPでメンターを経験する。 その後、渡米しカリフォルニアの大学に行きながら シリコンバレーで現役のエンジニアとして働いている。 同時にTECHACADEMYのメンターをしている
投稿を作成しました 16

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連する投稿

検索語を上に入力し、 Enter キーを押して検索します。キャンセルするには ESC を押してください。

トップに戻る
%d人のブロガーが「いいね」をつけました。