Scalaの配列、タプル、コレクションのリスト

Scalaのコレクションの場合:

セットA、要素b、セットB

  1. A + bは、新しいセットが生成され、要素が新しいセットに追加され、元のセットAの内容が変更されないことを意味します。
  2. Abは、上記と同じように、要素の削除を表します
  3. A + = bは、セットA自体に要素を追加することを意味します
  4. A- = b、これはA自体から要素を削除することを意味します
  5. A ++ B、新しいセットを取得します。新しいセットには、Aのすべての要素とBのすべての要素が含まれます。元のコレクションAの内容は変更されていません。
  6. A-B、新しいセットを取得します。新しいセットにはAの要素があり、Bの要素を削除する必要があります。
  7. A ++ = B、Bのすべての要素をAに追加します。
  8. A– = B、AからBの要素を削除します。

1.アレイ

  • 固定長配列
1-长度不可以改变
2-元素可以改变

语法
// 通过指定长度定义数组
val/var 变量名 = new Array[元素类型](数组长度)// 用元素直接初始化数组
val/var 变量名 = Array(元素1, 元素2, 元素3...)

ここに写真の説明を挿入
ここに写真の説明を挿入

  • 可変長配列
语法
1) 创建空的ArrayBuffer变长数组,语法结构:
val/var a = ArrayBuffer[元素类型]()

2) 创建带有初始元素的ArrayBuffer
val/var a = ArrayBuffer(元素1,元素2,元素3....)

+ =を
使用して要素を追加します- =を使用して要素を削除します
++ =を使用して可変長配列に配列を追加します

案例: 
// 定义变长数组
scala> val a = ArrayBuffer("hadoop", "spark", "flink")
a: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(hadoop, spark, flink)// 追加一个元素
scala> a += "flume"
res10: a.type = ArrayBuffer(hadoop, spark, flink, flume)// 删除一个元素
scala> a -= "hadoop"
res11: a.type = ArrayBuffer(spark, flink, flume)// 追加一个数组
scala> a ++= Array("hive", "sqoop")
res12: a.type = ArrayBuffer(spark, flink, flume, hive, sqoop)
  • アレイをトラバースします
scala> val a = Array(1,2,3,4,5)
a: Array[Int] = Array(1, 2, 3, 4, 5)
​
scala> for(i <- 0 to a.length - 1) println(a(i))
1
2
3
4
5
​
scala> for(i <- 0 until a.length) println(a(i))
1
2
3
4
5
  • アレイ共通アルゴリズム
1) 最大值
2)最小值
3)求和
4)排序
scala> val a = ArrayBuffer(1,2,3,4,18000)
a: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 2, 3, 4, 18000)

scala> a.min
res1: Int = 1

scala> a.sum
res2: Int = 18010

scala> a.sorted
res3: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 2, 3, 4, 18000)

scala> a.max
res4: Int = 18000

scala>

2.タプル

  • タプルを使用して、さまざまなタイプの値のセットを含めることができます。例:名前、年齢、性別、生年月日。タプルの要素は不変です。
语法
使用括号来定义元组
val/var 元组 = (元素1, 元素2, 元素3....)

使用箭头来定义元组(只支持元组只有两个元素时)
val/var 元组 = 元素1->元素2
定义: 
1) 
scala> val a = ("liuafu","kobe","James",2021)
a: (String, String, String, Int) = (liuafu,kobe,James,2021)

2)
scala> val a = ("kobe"->41)
a: (String, Int) = (kobe,41)

访问: 
1)
访问第一个元素: 
scala> a._1
res6: String = kobe

访问第二个元素: 
scala> a._2
res7: Int = 41

3.リスト

  • リストは、scalaで最も重要で一般的に使用されるデータ構造であり、Javaのリストと同等です。
  • 整然と繰り返す

不変のリスト:

定义:列表的元素、长度都是不可变的。

语法:
1) 使用List(元素1, 元素2, 元素3, ...)来创建一个不可变列表,语法格式:
val/var 变量名 = List(元素1, 元素2, 元素3...)   //最常用

2) 使用Nil创建一个不可变的空列表
val/var 变量名 = Nil

3) 使用::方法创建一个不可变列表
val/var 变量名 = 元素1 :: 元素2 :: Nil

例如: 
scala> val a = List(18000,20000,22000)
a: List[Int] = List(18000, 20000, 22000)

変数リスト:

定义: 列表的元素、长度都是可变的。

语法:
使用ListBuffer[元素类型]()创建空的可变列表,语法结构:
val/var 变量名 = ListBuffer[T]()

使用ListBuffer(元素1, 元素2, 元素3...)创建可变列表,语法结构:
val/var 变量名 = ListBuffer(元素1,元素2,元素3...)

操作変数リスト:

  1. 要素の取得(括弧を使用したアクセス(インデックス値))
  2. 要素を追加(+ =)
  3. リストを追加する(++ =)
  4. 要素を変更します(括弧を使用して要素を取得してから割り当てます)
  5. 要素を削除(-=)
  6. リストに変換(toList)
  7. 配列に変換(toArray)
//创建一个可变列表
scala> val a = ListBuffer(1,2,3)
a: scala.collection.mutable.ListBuffer[Int] = ListBuffer(1, 2, 3)

//获取列表的第一个元素
scala> a(0)
res8: Int = 1

//添加元素
scala> a +=4
res9: a.type = ListBuffer(1, 2, 3, 4)

//添加一个列表
scala> a ++=List(18000,20000,22000)
res10: a.type = ListBuffer(1, 2, 3, 4, 18000, 20000, 22000)

//删除一个元素
scala> a -=1
res11: a.type = ListBuffer(2, 3, 4, 18000, 20000, 22000)

//转为一个数组
scala> a.toArray
res12: Array[Int] = Array(2, 3, 4, 18000, 20000, 22000)

//转为一个不可变的列表
scala> a.toList
res13: List[Int] = List(2, 3, 4, 18000, 20000, 22000)

  • リストの一般的な操作
  1. リストが空かどうかを判断します(isEmpty)
  2. 2つのリストを連結する(++)
  3. リストの最初の要素(ヘッド)と残りの部分(テール)を取得します
  4. リバースリスト(リバース)
  5. プレフィックスを取得(テイク)、サフィックスを取得(ドロップ)
  6. 平らにする
  7. ジッパー(zip)と解凍(unzip)
  8. 変換文字列(toString)
  9. 文字列の生成(mkString)
  10. 連合
  11. 交差点(交差点)
  12. 違い(diff)
scala> val a = List(1,2,3,4)
a: List[Int] = List(1, 2, 3, 4)

//判断是否为空
scala> a.isEmpty
res14: Boolean = false

//拼接两个列表
scala> val b = List(18000,20000,22000)
b: List[Int] = List(18000, 20000, 22000)

scala> a ++ b
res16: List[Int] = List(1, 2, 3, 4, 18000, 20000, 22000)

//反转
scala> b.reverse
res17: List[Int] = List(22000, 20000, 18000)

//拉链 
scala> val a = List("zhangsan", "lisi", "wangwu")
a: List[String] = List(zhangsan, lisi, wangwu)
​
scala> val b = List(19, 20, 21)
b: List[Int] = List(19, 20, 21)
​
scala> a.zip(b)
res1: List[(String, Int)] = List((zhangsan,19), (lisi,20), (wangwu,21))

//拉开
scala> res1.unzip
res2: (List[String], List[Int]) = (List(zhangsan, lisi, wangwu),List(19, 20, 21))

//フラット化:フラット化とは、リスト内のすべての要素を1つのリストにまとめることを意味します。
ここに写真の説明を挿入

例子:
scala> val a =List(List(12,15),List(25,30),List(55,20))
a: List[List[Int]] = List(List(12, 15), List(25, 30), List(55, 20))

scala> a.flatten
res18: List[Int] = List(12, 15, 25, 30, 55, 20)

おすすめ

転載: blog.csdn.net/m0_49834705/article/details/112678969