元组-列表

元组

元组可以用来包含一组不同类型的值。例如:姓名,年龄,性别,出生年月。元组的元素是不可变的。

定义元组

使用括号来定义元组

val/var 元组 = (元素1, 元素2, 元素3....)

使用箭头来定义元组(元组只有两个元素)

val/var 元组 = 元素1->元素2

参考代码

scala> val a = ("zhangsan", 20)

a: (String, Int) = (zhangsan,20)

 

scala> val a = "zhangsan" -> 20

a: (String, Int) = (zhangsan,20)

访问元组

使用_1_2_3....来访问元组中的元素,_1表示访问第一个元素,依次类推

参考代码

scala> val a = "zhangsan" -> "male"

a: (String, String) = (zhangsan,male)

 

/获取第一个元素

scala> a._1

res41: String = zhangsan

 

获取第二个元素

scala> a._2

res42: String = male

列表

列表是scala中最重要的、也是最常用的数据结构。List具备以下性质:

  1. 可以保存重复的值
  2. 有先后顺序

在scala中,也有两种列表,一种是不可变列表、另一种是可变列表

定义

不可变列表就是列表的元素、长度都是不可变的

语法

val/var 变量名 = List(元素1, 元素2, 元素3...)

使用Nil创建一个不可变的空列表

val/var 变量名 = Nil

使用::方法创建一个不可变列表

val/var 变量名 = 元素1 :: 元素2 :: Nil

使用::拼接方式来创建列表,必须在最后添加一个Nil

示例一

创建一个不可变列表,存放以下几个元素(1,2,3,4)

参考代码

scala> val a = List(1,2,3,4)
a: List[Int] = List(1, 2, 3, 4)

示例二

使用Nil创建一个不可变的空列表

参考代码

scala> val a = Nil
a: scala.collection.immutable.Nil.type = List()

示例三

使用::方法创建列表,包含-2、-1两个元素

参考代码

scala> val a = -2 :: -1 :: Nil
a: List[Int] = List(-2, -1)

可变列表

可变列表就是列表的元素、长度都是可变的

要使用可变列表,先要导入import scala.collection.mutable.ListBuffer

  1. 可变集合都在mutable包中
  2. 不可变集合都在immutable包中(默认导入)

定义

使用ListBuffer[元素类型]()创建空的可变列表,语法结构:

val/var 变量名 = ListBuffer[Int]()

使用ListBuffer(元素1, 元素2, 元素3...)创建可变列表,语法结构:

val/var 变量名 = ListBuffer(元素1,元素2,元素3...)

示例一

创建空的整形可变列表

参考代码

  scala> val a = ListBuffer[Int]()

  a: scala.collection.mutable.ListBuffer[Int] = ListBuffer()

示例二

创建一个可变列表,包含以下元素:1,2,3,4

参考代码

scala> val a = ListBuffer(1,2,3,4)

a: scala.collection.mutable.ListBuffer[Int] = ListBuffer(1, 2, 3, 4)

可变列表操作

  1. 获取元素(使用括号访问(索引值)
  2. 添加元素(+=
  3. 追加一个列表(++=
  4. 更改元素(使用括号获取元素,然后进行赋值
  5. 删除元素(-=
  6. 转换为ListtoList
  7. 转换为ArraytoArray

示例

  1. 定义一个可变列表包含以下元素:1,2,3
  2. 获取第一个元素
  3. 添加一个新的元素:4
  4. 追加一个列表,该列表包含以下元素:5,6,7
  5. 删除元素7
  6. 将可变列表转换为不可变列表
  7. 将可变列表转换为数组

参考代码

/导入可变列表

scala> import scala.collection.mutable.ListBuffer

import scala.collection.mutable.ListBuffer

 

创建可变列表

scala> val a = ListBuffer(1,2,3)

a: scala.collection.mutable.ListBuffer[Int] = ListBuffer(1, 2, 3)

 

 获取第一个元素

scala> a(0)

res19: Int = 1

 

追加一个元素

scala> a += 4

res20: a.type = ListBuffer(1, 2, 3, 4)

 

追加一个列表

scala> a ++= List(5,6,7)

res21: a.type = ListBuffer(1, 2, 3, 4, 5, 6, 7)

 

删除元素

scala> a -= 7

res22: a.type = ListBuffer(1, 2, 3, 4, 5, 6)

 

转换为不可变列表

scala> a.toList

res23: List[Int] = List(1, 2, 3, 4, 5, 6)

 

转换为数组

scala> a.toArray

res24: Array[Int] = Array(1, 2, 3, 4, 5, 6)

列表常用操作

以下是列表常用的操作

  1. 判断列表是否为空(isEmpty
  2. 拼接两个列表(++
  3. 获取列表的首个元素(head)和剩余部分(tail)
  4. 反转列表(reverse
  5. 获取前缀(take)、获取后缀(drop
  6. 扁平化(flatten
  7. 拉链(zip)和拉开(unzip
  8. 转换字符串(toString
  9. 生成字符串(mkString
  10. 并集(union
  11. 交集(intersect
  12. 差集(diff

判断列表是否为空

参考代码

scala> val a = List(1,2,3,4)
a: List[Int] = List(1, 2, 3, 4)

scala> a.isEmpty
res51: Boolean = false

拼接两个列表

参考代码

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

scala> val b = List(4,5,6)
b: List[Int] = List(4, 5, 6)

scala> a ++ b
res52: List[Int] = List(1, 2, 3, 4, 5, 6)

获取列表的首个元素和剩余部分

参考代码

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

scala> a.head
res4: Int = 1

scala> a.tail
res5: List[Int] = List(2, 3)

反转列表

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

scala> a.reverse
res6: List[Int] = List(3, 2, 1)

获取列表前缀和后缀

参考代码

scala> val a = List(1,2,3,4,5)

a: List[Int] = List(1, 2, 3, 4, 5)

 

scala> a.take(3)

res56: List[Int] = List(1, 2, 3)

 

scala> a.drop(3)

res60: List[Int] = List(4, 5)

扁平化(压平)

扁平化表示将列表中的     列表中的所有元素放到一个列表中。

参考代码

scala> val a = List(List(1,2), List(3), List(4,5))

a: List[List[Int]] = List(List(1, 2), List(3), List(4, 5))

 

scala> a.flatten

res0: List[Int] = List(1, 2, 3, 4, 5)

拉链与拉开

  1. 拉链:使用zip将两个列表,组合成一个元素为元组的列表
  2. 拉开:将一个包含元组的列表,解开成包含两个列表的元组

参考代码

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值