@@ -22,7 +22,7 @@ mutableなコレクションを効果的に使えばプログラムの実行速
22
22
- ` Map ` (immutable)・` Map ` (mutable)
23
23
- ` Set ` (immutable)・ ` Set ` (mutable)
24
24
25
- ## [ Array] ( https://github.com/scala/scala/blob/v2.13.13 /src/library/scala/Array.scala )
25
+ ## [ Array] ( https://github.com/scala/scala/blob/v2.13.14 /src/library/scala/Array.scala )
26
26
27
27
まずは大抵のプログラミング言語にある配列です。
28
28
96
96
97
97
<!-- end answer -->
98
98
99
- ### [ Range] ( https://github.com/scala/scala/blob/v2.13.13 /src/library/scala/collection/immutable/Range.scala )
99
+ ### [ Range] ( https://github.com/scala/scala/blob/v2.13.14 /src/library/scala/collection/immutable/Range.scala )
100
100
101
101
` Range ` は範囲を表すオブジェクトです。` Range ` は直接名前を指定して生成するより、` to ` メソッドと` until ` メソッドを用いて呼びだすことが多いです。また、` toList ` メソッドを用いて、その範囲の数値の列を後述する` List ` に変換することができます。では、早速REPLで` Range ` を使ってみましょう。
102
102
112
112
113
113
` to ` は右の被演算子を含む範囲を、` until ` は右の被演算子を含まない範囲を表していることがわかります。また、` Range ` は` toList ` で後述する` List ` に変換することができることもわかります。
114
114
115
- ### [ List] ( https://github.com/scala/scala/blob/v2.13.13 /src/library/scala/collection/immutable/List.scala )
115
+ ### [ List] ( https://github.com/scala/scala/blob/v2.13.14 /src/library/scala/collection/immutable/List.scala )
116
116
117
117
さて、導入として大抵の言語にある` Array ` を出しましたが、Scalaでは` Array ` を使うことはそれほど多くありません。代わりに` List ` や
118
118
` Vector ` といったデータ構造をよく使います(` Vector ` については後述します)。` List ` の特徴は、一度作成したら中身を
@@ -132,9 +132,9 @@ lst(0) = 7
132
132
133
133
### Nil:空のList
134
134
135
- まず最初に紹介するのは` Nil ` です。Scalaで空の` List ` を表すには` Nil ` というものを使います。Rubyなどでは` nil ` は言語上かなり特別な意味を持ちますが、Scalaではデフォルトでスコープに入っているということ以外は特別な意味はなく[ 単にobjectです] ( https://github.com/scala/scala/blob/v2.13.13 /src/library/scala/collection/immutable/List.scala#L662 ) 。Nilは単体では意味がありませんが、次に説明する` :: ` と合わせて用いることが多いです。
135
+ まず最初に紹介するのは` Nil ` です。Scalaで空の` List ` を表すには` Nil ` というものを使います。Rubyなどでは` nil ` は言語上かなり特別な意味を持ちますが、Scalaではデフォルトでスコープに入っているということ以外は特別な意味はなく[ 単にobjectです] ( https://github.com/scala/scala/blob/v2.13.14 /src/library/scala/collection/immutable/List.scala#L662 ) 。Nilは単体では意味がありませんが、次に説明する` :: ` と合わせて用いることが多いです。
136
136
137
- ### [ :: - Listの先頭に要素をくっつける] ( https://github.com/scala/scala/blob/v2.13.13 /src/library/scala/collection/immutable/List.scala#L97 )
137
+ ### [ :: - Listの先頭に要素をくっつける] ( https://github.com/scala/scala/blob/v2.13.14 /src/library/scala/collection/immutable/List.scala#L97 )
138
138
139
139
` :: ` (コンスと読みます)は既にある` List ` の先頭に要素をくっつけるメソッドです。これについては、REPLで結果をみた方が早いでしょう。
140
140
@@ -742,7 +742,7 @@ List(1, 2, 3, 4) :+ 5 // 注意!末尾への追加は、Listの要素数分か
742
742
743
743
` mkString ` をはじめとした` List ` の色々なメソッドを紹介してきましたが、実はこれらの大半は` List ` 特有ではなく、既に紹介した` Range ` や` Array ` 、これから紹介する他のコレクションでも同様に使うことができます。何故ならばこれらの操作の大半は特定のコレクションではなく、コレクションのスーパータイプである共通のトレイト中に宣言されているからです。もちろん、` List ` に要素を加える処理と` Set ` に要素を加える処理(` Set ` に既にある要素は加えない)のように、中で行われる処理が異なることがあるので、その点は注意する必要があります。詳しくは[ ScalaのAPIドキュメント] ( https://www.scala-lang.org/api/current/index.html ) を探索してみましょう。
744
744
745
- ### [ Vector] ( https://github.com/scala/scala/blob/v2.13.13 /src/library/scala/collection/immutable/Vector.scala )
745
+ ### [ Vector] ( https://github.com/scala/scala/blob/v2.13.14 /src/library/scala/collection/immutable/Vector.scala )
746
746
747
747
` Vector ` は少々変わったデータ構造です。` Vector ` は一度データ構造を構築したら変更できないimmutableなデータ構造
748
748
です。要素へのランダムアクセスや長さの取得、データの挿入や削除、いずれの操作も十分に高速にできる比較的
@@ -763,11 +763,11 @@ Vector(1, 2, 3, 4, 5).updated(2, 5)
763
763
` Map ` はキーから値へのマッピングを提供するデータ構造です。他の言語では辞書や連想配列と呼ばれたりします。
764
764
Scalaでは` Map ` として一度作成したら変更できないimmutableな` Map ` と変更可能なmutableな` Map ` の2種類を提供しています。
765
765
766
- ### [ ` scala.collection.immutable.Map ` ] ( https://github.com/scala/scala/blob/v2.13.13 /src/library/scala/collection/immutable/Map.scala )
766
+ ### [ ` scala.collection.immutable.Map ` ] ( https://github.com/scala/scala/blob/v2.13.14 /src/library/scala/collection/immutable/Map.scala )
767
767
768
768
Scalaで何も設定せずにただ` Map ` と書いた場合、` scala.collection.immutable.Map ` が使われます。その名の通り、一度
769
- 作成すると変更することはできません。内部の実装としては主に[ ` scala.collection.immutable.HashMap ` ] ( https://github.com/scala/scala/blob/v2.13.13 /src/library/scala/collection/immutable/HashMap.scala ) と
770
- [ ` scala.collection.immutable.TreeMap ` ] ( https://github.com/scala/scala/blob/v2.13.13 /src/library/scala/collection/immutable/TreeMap.scala ) の2種類がありますが、通常は` HashMap ` が使われます。
769
+ 作成すると変更することはできません。内部の実装としては主に[ ` scala.collection.immutable.HashMap ` ] ( https://github.com/scala/scala/blob/v2.13.14 /src/library/scala/collection/immutable/HashMap.scala ) と
770
+ [ ` scala.collection.immutable.TreeMap ` ] ( https://github.com/scala/scala/blob/v2.13.14 /src/library/scala/collection/immutable/TreeMap.scala ) の2種類がありますが、通常は` HashMap ` が使われます。
771
771
772
772
``` scala mdoc:nest
773
773
val m = Map (" A" -> 1 , " B" -> 2 , " C" -> 3 )
@@ -807,8 +807,8 @@ Set(1, 1, 2, 3, 4)
807
807
### ` scala.collection.immutable.Set `
808
808
809
809
Scalaで何も設定せずにただ` Set ` と書いた場合、` scala.collection.immutable.Set ` が使われます。immutableな` Map ` の場合と
810
- 同じく、一度作成すると変更することはできません。内部の実装としては、主に [ ` scala.collection.immutable.HashSet ` ] ( https://github.com/scala/scala/blob/v2.13.13 /src/library/scala/collection/immutable/HashSet.scala ) と
811
- [ ` scala.collection.immutable.TreeSet ` ] ( https://github.com/scala/scala/blob/v2.13.13 /src/library/scala/collection/immutable/TreeSet.scala ) の2種類がありますが、通常は` HashSet ` が使われます。
810
+ 同じく、一度作成すると変更することはできません。内部の実装としては、主に [ ` scala.collection.immutable.HashSet ` ] ( https://github.com/scala/scala/blob/v2.13.14 /src/library/scala/collection/immutable/HashSet.scala ) と
811
+ [ ` scala.collection.immutable.TreeSet ` ] ( https://github.com/scala/scala/blob/v2.13.14 /src/library/scala/collection/immutable/TreeSet.scala ) の2種類がありますが、通常は` HashSet ` が使われます。
812
812
813
813
``` scala mdoc:nest
814
814
val s = Set (1 , 2 , 3 , 4 , 5 )
@@ -820,8 +820,8 @@ s // 元のSetはそのまま
820
820
821
821
### ` scala.collection.mutable.Set `
822
822
823
- Scalaの変更可能な` Set ` は` scala.collection.mutable.Set ` にあります。主な実装としては、[ ` scala.collection.mutable.HashSet ` ] ( https://github.com/scala/scala/blob/v2.13.13 /src/library/scala/collection/mutable/HashSet.scala ) 、
824
- [ ` scala.collection.mutable.TreeSet ` ] ( https://github.com/scala/scala/blob/v2.13.13 /src/library/scala/collection/mutable/TreeSet.scala ) がありますが、通常は` HashSet ` が使われます。
823
+ Scalaの変更可能な` Set ` は` scala.collection.mutable.Set ` にあります。主な実装としては、[ ` scala.collection.mutable.HashSet ` ] ( https://github.com/scala/scala/blob/v2.13.14 /src/library/scala/collection/mutable/HashSet.scala ) 、
824
+ [ ` scala.collection.mutable.TreeSet ` ] ( https://github.com/scala/scala/blob/v2.13.14 /src/library/scala/collection/mutable/TreeSet.scala ) がありますが、通常は` HashSet ` が使われます。
825
825
826
826
``` scala mdoc:nest
827
827
import scala .collection .mutable
0 commit comments