scala2

本文详细介绍了Scala中的集合操作,包括列表的不可变性、构造、访问、遍历及基本操作,如zip、zipAll、zipWithIndex。还探讨了Set的创建、操作以及交集的计算。此外,文章提到了集合应用中的并行计算,如分治算法和工作窃取算法,以及Java和Scala集合的互操作性。
摘要由CSDN通过智能技术生成

拉链扩展

zip函数将传进来的两个参数中对应位置上的元素组成一个pair数组,如果其中一个参数元素比较长,那么多余的参数会被删除

zipAll函数和zip函数类似,但是如果其中一个元素的个数比较少,那么江永默认的元素填充

zipWithIndex函数将元素和其所在的位置索引组成一个pair

该方法把集合中每个元素和该元素的索引进行一个拉链操作

upzip函数可以键一个元组的列表转换成一个列表的元组

列表List

列表中的元素类型不可以不同

列表是有序的

不可变列表

不可变列表的构造

不可变的序列,import scala.collection.immutable._

空列表
可以使用Nil构建一个空列表
val empty = Nil
也可以使用空元素构建一个空列表
val empty : List[Nothing] = List()
val fruit=List("apples","oranges","pears")
​
val dig3 = 
    List(
        List(1,0,0),
        List(0,1,0),
        List(0,0,1)
    )
​
val empty =List()
​
所有的列表可以看做是有两个基础构造块Nil和中缀操作符::构成 ,::表示从列表前段扩展
在scala中流标要么为空(Nil表示空列表)要么是一个head元素加上一个tail列表
9 ::List(5,2) :: 操作符是将给定的头和尾创建一个新的列表
注意: ::操作符是右结合的,如 9 :: 5 :: 2 :: Nil相当于9 :: (5 ::(2 ::Nil))
val fruit ="apples" :: ("organes" :: ("pears" :: Nil))
​
val diag3 = (1 :: (0 :: (0 :: Nil))) :: (0 :: (1 :: (0 :: Nil))) :: (0 :: (0 :: (1 :: Nil))) :: Nil
​
val nums=1::(2::(3::(4::Nil)))
​
val nums = 1 :: 2 :: 3 :: 4
会报错
​
val nums =1 :: 2 :: 3 :: 4 :: list0 :: Nil
列表中的元素可以是不同类型
​

列表的访问

val nums = 1 :: 2 :: 3 :: 4 :: list0 :: Nil
​
nums(1)
​
nums(3)

列表的遍历

单个集合的各种遍历方式
val lst = List(1,2,3,4,5)
list.foreach{x=>print(x+",")}
foreach遍历,传统遍历方式
​
​
var temp = list.map{ x => x+1}
与foreach的区别是返回值为List
​
var temp =lst.reduceLeft((sum,i)->sum +i)
返回值类型是一个与集合相同的Int
​
​
var temp2 =lst.foldLeft(List[Int]())((x,y)=>x::y)
返回值是自定义类型
fold类函数还可以写成 : \ , / : 代码精简不少,但是可读性降低了
​
var temp3 = (List[Int]()/:lst){(m,c)=?c::m}
实现反转

列表的追加

创建一个不可变集合
val lst1 = List(1,2,3)
将0插入到lst1前面生成一个新的list :: 和 +: 右结合
:: 为右结合操作符
将元素追加到集合开头
val lst2 = 0 :: lst1
val lst3 = lst1.::(0)
val l
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值