Latest web development tutorials

Scalaの一覧(リスト)

Scalaの一覧(リスト)

Scalaのコレクション Scalaのコレクション

Scalaのリストは配列に似ている、彼らはすべての要素の同じタイプであるが、それらは異なっている:リストは不変であるそれらが定義されると、値が再帰構造(つまり、リンクテーブルの構造である)と、アレイとのリストが続き、変更することはできませんいいえ。 。

要素型Tは、リスト[T]のリストのように書くことができます。 例えば、以下は、様々なタイプのリストを示しています。

// 字符串列表
val site: List[String] = List("w3big", "Google", "Baidu")

// 整型列表
val nums: List[Int] = List(1, 2, 3, 4)

// 空列表
val empty: List[Nothing] = List()

// 二维列表
val dim: List[List[Int]] =
   List(
      List(1, 0, 0),
      List(0, 1, 0),
      List(0, 0, 1)
   )

リストには2つの基本的な単位構造は無記号であり、::

nilがまた空のリストとして表すことができます。

私たちは、次のように上記の例は書くことができます。

// 字符串列表
val site = "w3big" :: ("Google" :: ("Baidu" :: Nil))

// 整型列表
val nums = 1 :: (2 :: (3 :: (4 :: Nil)))

// 空列表
val empty = Nil

// 二维列表
val dim = (1 :: (0 :: (0 :: Nil))) ::
          (0 :: (1 :: (0 :: Nil))) ::
          (0 :: (0 :: (1 :: Nil))) :: Nil

基本操作の一覧

Scalaのリストは、3つの基本的な操作があります。

  • headリストの最初の要素を返します。
  • tail最初の要素の他の要素に加えて、含まれているリストを返します。
  • isEmptyリストが空の場合はtrueを返します

スカラ・リストのすべての操作は、3つの基本的な動作を発現するために使用することができます。 例としては、次のとおりです:

object Test {
   def main(args: Array[String]) {
      val site = "w3big" :: ("Google" :: ("Baidu" :: Nil))
      val nums = Nil

      println( "第一网站是 : " + site.head )
      println( "最后一个网站是 : " + site.tail )
      println( "查看列表 site 是否为空 : " + site.isEmpty )
      println( "查看 nums 是否为空 : " + nums.isEmpty )
   }
}

上記のコードの実装、出力は次のようになります。

$ vim Test.scala 
$ scala Test.scala 
第一网站是 : w3big
最后一个网站是 : List(Google, Baidu)
查看列表 site 是否为空 : false
查看 nums 是否为空 : true

接続リスト

あなたは:::演算子またはリストを使用することができます。:: :()メソッドまたはList.concat()メソッドは、2つ以上のリストを接続します。 例としては、次のとおりです:

object Test {
   def main(args: Array[String]) {
      val site1 = "w3big" :: ("Google" :: ("Baidu" :: Nil))
      val site2 = "Facebook" :: ("Taobao" :: Nil)

      // 使用 ::: 运算符
      var fruit = site1 ::: site2
      println( "site1 ::: site2 : " + fruit )
      
      // 使用 Set.:::() 方法
      fruit = site1.:::(site2)
      println( "site1.:::(site2) : " + fruit )

      // 使用 concat 方法
      fruit = List.concat(site1, site2)
      println( "List.concat(site1, site2) : " + fruit  )
      

   }
}

上記のコードの実装、出力は次のようになります。

$ vim Test.scala 
$ scala Test.scala 
site1 ::: site2 : List(w3big, Google, Baidu, Facebook, Taobao)
site1.:::(site2) : List(Facebook, Taobao, w3big, Google, Baidu)
List.concat(site1, site2) : List(w3big, Google, Baidu, Facebook, Taobao)

List.fill()

私たちは、要素のリストの繰り返しの数を指定して作成するList.fill()メソッドを使用することができます。

object Test {
   def main(args: Array[String]) {
      val site = List.fill(3)("w3big") // 重复 w3big 3次
      println( "site : " + site  )

      val num = List.fill(10)(2)         // 重复元素 2, 10 次
      println( "num : " + num  )
   }
}

上記のコードの実装、出力は次のようになります。

$ vim Test.scala 
$ scala Test.scala 
site : List(w3big, w3big, w3big)
num : List(2, 2, 2, 2, 2, 2, 2, 2, 2, 2)

List.tabulate()

List.tabulate()メソッドは、指定された関数によってリストを作成するために使用されます。

:最初の引数は、次のような例は、2次元とすることができる要素の数、指定された関数の2番目のパラメータは、我々は関数を指定することによって、結果を計算し、リストに挿入された値を返し、開始値が0であります

object Test {
   def main(args: Array[String]) {
      // 通过给定的函数创建 5 个元素
      val squares = List.tabulate(6)(n => n * n)
      println( "一维 : " + squares  )

      // 创建二维列表
      val mul = List.tabulate( 4,5 )( _ * _ )      
      println( "多维 : " + mul  )
   }
}

上記のコードの実装、出力は次のようになります。

$ vim Test.scala 
$ scala Test.scala 
一维 : List(0, 1, 4, 9, 16, 25)
多维 : List(List(0, 0, 0, 0, 0), List(0, 1, 2, 3, 4), List(0, 2, 4, 6, 8), List(0, 3, 6, 9, 12))

List.reverse

逆リストのためのList.reverseシーケンスは、次のような例は次のとおりです。

object Test {
   def main(args: Array[String]) {
      val site = "w3big" :: ("Google" :: ("Baidu" :: Nil))
      println( "site 反转前 : " + site )

      println( "site 反转前 : " + site.reverse )
   }
}

上記のコードの実装、出力は次のようになります。

$ vim Test.scala 
$ scala Test.scala 
site 反转前 : List(w3big, Google, Baidu)
site 反转前 : List(Baidu, Google, w3big)

Scalaのリスト一般的な方法

次の表では、Scalaのリスト一般的な方法を示しています。

いいえ。 メソッドと説明
1

デフ+ :( elemは:A):リスト[A]

事前要素のリストに追加します

scala> val x = List(1)
x: List[Int] = List(1)

scala> val y = 2 +: x
y: List[Int] = List(2, 1)

scala> println(x)
List(1)
2

デフ::( X:A):リスト[A]

要素を追加するには、リストの先頭で

3

デフ:: :(接頭辞:リスト[A ]):リスト[A]

リストの先頭に指定されたリストの要素を追加します

4

デフ:+(elemは:A) :リスト[A]

あなたがリストをコピーした後に要素を追加します。

scala> val a = List(1)
a: List[Int] = List(1)

scala> val b = a :+ 2
b: List[Int] = List(1, 2)

scala> println(a)
List(1)
5

デフaddString(B:StringBuilderの):のStringBuilder

StringBuilderに、リストのすべての要素を追加します。

6

デフaddString(B:StringBuilderを、9月 :文字列):StringBuilderの

StringBuilderに、リストのすべての要素を追加し、区切り文字を指定

7

デフ適用されます(nは:INT):

インデックスで要素のリストを取得します。

8

:デフ(:任意ELEM)が含まれていブール

リストに指定された要素が含まれているかどうかを検出します

9

デフcopyToArray(XS:配列[A ]、起動します。int、LEN:INT):ユニット

配列にコピーし、リストの要素を。

10

デフ別個:リスト[A]

リストの重複要素を削除して、新しいリストを返します。

11

デフドロップ(N:INT):リスト[A]

最初のn個の要素を捨てて、新しいリストを返します。

12

デフdropRight(N:INT):リスト[A]

最後のn個の要素を捨てて、新しいリストを返します。

13

デフdropWhile(P:(A) =>ブール):リスト[A]

条件が満たされ、pがなくなるまで廃棄要素は、左から右へ

14

デフendsWith [B](その:のSeq [B]):ブール

指定されたシーケンスの最後にリストかどうかを検出

15

デフ等号(つまり:任意):ブール

同じかどうかを確認します

16

デフ(:(A)は、pが存在するブール:=>ブール値)

存在する要素のリストに指定された条件を分析します。

Lは、要素が存在するかどうかを判断します。

scala> l.exists(s => s == "Hah")
res7: Boolean = true
17

デフ(:(A)は、pフィルタリスト[A]:=>ブール値)

出力シンボルのすべての要素が条件を指定しました。

フィルタ要素3の長さ:

scala> l.filter(s => s.length == 3)
res8: List[String] = List(Hah, WOW)
18

デフのforall(P:(A) =>ブール):ブール

すべての要素の検出。

たとえば、次のように先頭に「H」のすべての要素かどうかを判断します。

Scalaの> l.forall(S => s.startsWith( "H"))res10:ブール=偽
19

デフforeachの(F:(A) =>ユニット):ユニット

リストへの関数のすべての要素

20

デフヘッド:

リストの最初の要素を取得します。

21

デフのindexOf(elemは:A、から :INT):のInt

から指定された場所からの要素の最初の発生の位置を探します

22

デフのinit:リスト[A]

最後の1を除いて、すべての要素を返します。

23

デフ(のことを:配列[A交差 ]):リスト[A]

セットの共通部分を複数の計算

24

デフのisEmpty:ブール

リストが空であるかどうかを検出します

25

デフイテレータ:イテレータ[A]

要素を反復処理するために、新しいイテレータを作成します。

26

デフ続きます:

最後の要素を返します。

27

デフのlastIndexOf(elemは:A、エンド :INT):のInt

位置指定された終了位置にある要素の最後に出現を探し始めます

28

デフの長さ:のInt

戻るリストの長さに

29

DEFマップ[B](F: (A)=> B):リスト[B]

指定されたメソッドを介してすべての要素を再計算します

30

デフ最大:

最大の要素を探します

31

デフ分:A

最小の要素を探します

32

デフmkString:文字列

文字列としてすべての要素のリストを表示します

33

デフmkString(9月:文字列):文字列

セパレータは文字列としてすべての要素のリストが表示されます

34

デフリバース:リスト[A]

リバースリスト

35

defのソート[B>:A] :リスト[A]

リストの並べ替え

36

デフのstartsWith [B](その:のSeq [B]、オフセット:INT):ブール値

リストには、指定した位置に指定されたシーケンスが含まれているかどうかを検出

37

デフ合計:

要素の計算および収集

38

デフテール:リスト[A]

最初の1を除いて、すべての要素を返します。

39

デフ取る(N:int)を:リスト[A]

リストの最初のn個の要素を抽出

40

デフtakeRight(N:INT):リスト[A]

リストを抽出したn個の要素

41

デフのtoArray:配列[A]

配列へのリスト

42

デフtoBuffer [B>:A] :バッファ[B]

バックバッファは、すべての要素のリストが含まれています

43

デフtoMap [T、U]:マップ[T、U]

リストには、地図を変換しました

44

デフtoSeq:配列[A]

リストのSeqに変換

45

デフtoSet [B>:A] :セット[B]

リストコンバートセット

46

デフのtoString():文字列

文字列リストに変換

参照するより多くの方法APIドキュメント

Scalaのコレクション Scalaのコレクション