Scala集合生词记录

本文介绍了Scala中的泛型使用,如使用[]定义泛型,并通过head、tail和tails方法操作列表。重点讲解了foreach作为高阶函数在遍历集合时的应用,对比了foreach与for循环的不同,强调foreach不支持对集合的修改操作。同时,提到了List的tail、tails、slice和拉链等操作,展示了如何对集合进行拆分和组合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

泛型
scala中用[]表示泛型,用 (index) 获取元素
列表中可以存放各种类型的元素,但是泛型为Any

val list:List[Any] = List[Any](1,2,3,4,5,true)

Nil
三个常用的方法
head:列表里的第一个元素
tail:除了第一个元素以外,其余元素的列表
tails:依次排除第一个元素的所有所有情况的迭代器
listList() || listNil
Nil完全等价于 List()

foreach
高阶函数

foreach的书写格式:

for(元素类型 元素名称 : 遍历数组(集合)(或者能进行迭代的)){

语句

}

list.foreach(println)
总结来自:foreach增强for循环
foreach适用于只是进行集合或数组遍历,for则在较复杂的循环中效率更高。

foreach不能对数组或集合进行修改(添加删除操作),如果想要修改就要用for循环。

tail
tails
<-

/*
  关于列表的两个方法
   */
  var list_num = List(1,2,3,4,5,6,7,8)
  def headAndTail(): Unit ={
    println(list_num.head)
    println(list_num.tail)
    //所有tail形成了一个迭代器
    for(num<-list_num.tails){
      println(num)
    }
  }

拆分
slice

在这里插入图片描述

/*
    集合的拆分
   */
  var list_num = List(1,2,3,4,5,6,7,8)
  def func_split()={
    //按照条件拆分,结果是一个二元组,第一个元素是符合条件的,第二个元素是不符合条件的
    println(list_num.partition(_ % 2 == 0))
    //(List(2, 4, 6, 8),List(1, 3, 5, 7))

    //按数量拆分,前n个是一个元素,后面所有是第二个元素
    println(list_num.splitAt(3))
    //(List(1, 2, 3),List(4, 5, 6, 7, 8))

    //截取中间的部分元素
    println(list_num.slice(3, 6))
    //List(4, 5, 6)
  }

拉链

/**
   * 拉链操作,两个集合做拉链
   * 以最短的集合为主
   */
  def func_zip() = {

    val list_keys = List("name","age","gender")
    val list_values = List("tom",100,"boy",200)

    val list_zip = list_keys.zip(list_values)

    println(list_zip)
    //解拉链 以二元组的形式体现
    println(list_zip.unzip)

    val list_animal = List("monkey","lion","tiger","lion")
    println(list_animal.zipWithIndex)

  }
  

/*
List((name,tom), (age,100), (gender,boy))
(List(name, age, gender),List(tom, 100, boy))
List((monkey,0), (lion,1), (tiger,2), (lion,3))
*/

扁平化,右添加.:+,左添加::完全等于.::,take获取【较好理解,不记录了】

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值