Scalaでlist(リスト)を扱う方法【初心者向け】

【プログラミング初心者向け】Scalaでlistを使う方法を解説。特徴や使い方(要素追加・list同士の連結・要素を加工するmapメソッド)など、listを使用するうえで欠かせない情報をわかりやすくまとめました!

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

今回は、Scalaでlistを扱う方法を解説します。

Scalaについてそもそもよく分からないという方は、Scalaとは何なのか解説した記事をまずご覧ください。

 

なお本記事は、TechAcademyのScalaオンライン講座の内容をもとに作成しています。

 

田島悠介

今回は、Scalaに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

listの使い方と書き方について詳しく説明していくね!

大石ゆかり

お願いします!

 

Scalaのlistとは

Scalaのlistとは、格納されたオブジェクトを変更することができない配列のことです。

このことをimmutableと言い、中身を変更できない永続データ構造で、不変オブジェクトと呼ばれます。

永続データ構造のlistとScalaという言語の愛称は非常に良いです。

listはScalaのような関数型言語で重要なコレクションとして利用されます。

また、不変オブジェクトですが、オブジェクトを先頭に追加することが可能です。

listは、順次アクセスや再帰呼び出し性能が高いですが、ランダムアクセスは遅いです。

listとは違い、中身を変更できる配列をarrayといいます。

 

Scalaのlistの使い方

先頭に要素追加

文法

追加する値 +: (list).toList
追加する値 :: (list.toList

解説

1行目と2行目の結果は同じものになります。

listで生成された配列の先頭に追加する値で指定された値を追加します。

+:や::が先頭に追加する命令文です。

 

末尾に要素追加

文法

(list).toList :+追加する値

解説

listで生成された配列の最後尾に追加する値で指定された値を追加します。

:+が最後尾に追加する命令文です。

 

List同士を連結

文法

(連結するlist1).toList ::: (連結するlist2).toList
(連結するlist1).toList :: (連結するlist2).toList

解説

1行目と2行目では連結後の状態が異なる点に気を付けましょう。

1行目では、:::連結するlist1と連結するlist2をを連結したlistを作成することができます。

2行目では、::連結するlist2の中に、連結するlist1というlistを入れ子にして連結します。

入れ子とは、(3,4,5)という配列の中に、((0,1,2),3,4,5)というように、(0,1,2)という配列が連結されることです。

 

要素を加工するmapメソッド

文法

List(複数の要素).map(num => num * 2)

解説

Listで生成された複数の要素に対して、各要素を、mapを利用して要素を変数numに格納してnumを2倍した数値を生成して、mapに格納しています。

 

[PR]Scalaで挫折しない学習方法を動画で公開中

Scalaのlistを実際に書いてみよう

foreach文で配列の内容を取得する

ソースコード

object Main extends App {
(1 to 3).toList.foreach( num => println("連番:" + num) )
}

表示結果

連番:1
連番:2
連番:3

解説

1行目のobject Main extends App {では、ScalaのAppという機能をextend(継承し再利用)してMainという名前のObject(オブジェクト)を宣言しています。

2行目の(1 to 3).toList.foreach( num => println(“連番:” + num) )では、(1 to 3)で生成したlistの1から3の数字をnumに代入できる間処理を続けるforeachを利用しています。

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

今回は、Scalaでlistを使う方法を解説しました。

 

また、オンラインのプログラミングスクールTechAcademyでは、Scalaオンライン講座を開催しています。

Scalaを使ってWebアプリケーションを開発することができます。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間で習得することが可能です。

また、現役エンジニアから学べる無料のプログラミング体験会も実施しているので、ぜひ参加してみてください。

この記事を監修してくれた方

中本賢吾(なかもとけんご)
アジマッチ有限会社 代表取締役社長

開発実績:PHPフレームワークを利用した会員制SNS・ネットショップ構築、AWSや専用サーバー下でLinuxを使用したセキュアな環境構築、人工知能を利用したシステム開発、店舗検索スマホアプリ開発など。

その他にも地域の職業プログラマー育成活動を行い、2018年には小学生がUnityで開発したオリジナルAndroidアプリをGooglePlayでリリース。ゲームで遊ぶより作ろうぜ!を合言葉に、小学生でも起業できる技術力を育成可能で有ることを証明し続けている。