scala 返回值_Scala学习七之集合了解

Scala有一个非常通用,丰富,强大,可组合的集合库;集合是高阶的(high level)并暴露了一大套操作方法。

Scala的所有的集合类都可以在包 scala.collection 包中找到,其中集合类都是高级抽象类或特性

Iterable[T] 是所有可遍历的集合,它提供了迭代的方法(foreach)。Seq[T] 是有序集合,Set[T]是数学上的集合(无序且不重复),Map[T]是关联数组,也是无序的。

Scala 集合类系统地区分了可变的和不可变的集合。

可变集合可以在适当的地方被更新或扩展,意味着你可以修改、添加、移除一个集合的元素。

而不可变集合类,相比之下,永远不会改变。不过,你仍然可以模拟添加,移除或更新操作。但是这 些操作将在每一种情况下都返回一个新的集合,同时使原来的集合不发生改变。

可变的集合类位于 scala.collection.mutable 包中,而不可变的集合位于 scala.collection.immutable 。

scala.collection 包中的集合,既可以是可变的,也可以是不可变的

官方文档

http://www.scala-lang.org/docu/files/collections-api/collections.html

a49dfa5cdaec24189c41525db5ee5113.png

List集合

创建输出

7eeb7b417658c5b22971434a4b8547a8.png

获取头部元素

df5f4d5d21d6da3d0b6081d1c1d84f7e.png

获取除去头部元素之外的元素

52a3ec8ebdf4329b03fc1ffc2e02eb92.png

获取尾部元素

90a8eca966ac4dbda672caa1f9e9d236.png

获取除去尾部元素之外的元素

17ad2aec39a8c707b0ba45c07c190be7.png

可以从头拼接的方式创建集合

ccac80f86dd06f04f8d7cccee0274677.png

如果一直拼接创建集合(Nil可以理解为空串)

7391f0d336539dcc0a51a2fc2ebb36c7.png

如果从尾到头创建集合

99de21ceb2725b6334b2b4e3cefe9e4e.png

遍历for

51ad96bbfd470d457c87581e3f4aa6bd.png

如果更改元素会提示错误list4(0) = 100;

ced576b8ac338144fc82ef767c960154.png

可变List

import scala.collection.mutable.ListBuffer

构建

41d49ff28a308c30a8f5da8e675bd744.png

添加元素,遍历

944425b161c940b04d38a7c222378add.png

给指定位置插入元素

f92841fbf977e1ce10a585bb15350904.png

删除元素

fafd65ee16455091d9a52316f386795f.png

直接删除List

6a71f5c1da6a1e4cfd899480551e53ab.png

删除指定位置的元素

39c2c2a968a10aeac836ef635907b993.png

获取数据

bde642baf500d55a982d0b1064d5676d.png

更新数据

74d4709bc40c550ad5dd1110486cc775.png

转换

3e1c11b15b17099aa576378e89c4731d.png

如果想用Java集合

1e0bc140bc5b11321b1f26bf0468c152.png

把Java中List转换为scala中List

import scala.collection.JavaConverters._

58bea112e22bb166bde5882445c739a4.png

List中常见方法:

reverse

c7feb52307b03302768878cba016c749.png

Zip方法

50e55239dc582cf316239d2369014ba9.png

ZipAll

7f26a7f25e45b7edff9266b317bab00f.png

转换range

0d44cc4eb82e0844837eb1fb37aec529.png

Foreach遍历,Foreach一般用于数据输出,因为foreach没有返回值

745ebdaa583fc604bbe01baa783b48da.png

转换为字符串

8d796fe09d0bb20900fd08bd788afc0f.png

Map输出

1e63fb198fb928f86630f9b04e138305.png

Map一般是对每一个元素进行处理的,是有返回值的

80959b8269298462b5373293f3311bd4.png

flatMap 对集合中每一个元素进行处理,使用给定函数,并且返回一个新的集合 是在map的基础上进行了一次扁平化操作,不是把函数的返回值作为新集合的元素,而是把返回值中的元素作为新集合的元素

44d0361993f6909ecad79e538426c5b3.png

Filter数据过滤 对集合中的每个元素调用给定函数,如果函数执行返回值是true 就会保留,否则反之

9da68025c01b315eb9ac0c1642ed61e5.png

FilterNot和上面相反

e0b4178c74eebc7ba5858440d67e0b21.png

Reduce 数据聚合

01509228901dd782b5b3ae8e4e89e802.png

Fold 数据聚合 和reduce区别是可以给一个初始值

8e55866cb71906cfa8d1285bab9b7183.png

FoldLeft 给定的初始值可以是任意类型

6307555799241af0f67e5b40e7a28fdf.png

FoldRight

4987308795418a9e3eef8efafb8c1e77.png

Sorted 对集合元素进行排序

face9b304b7a6df39462608a668ef653.png

sortBy 类似Sorted 区别在于sortBy根据函数的返回值排序

7120afa4e7f442226f54bbd7513a981d.png

groupBy 按照给定的函数的返回值对数据进行分组操作,返回结果是Map集合

6e2e3d7be574e0590a18cf0f648a985d.png

Set

1)无序不重复

2)+/++/-/-- 都会创造一个新的Set

3)+=/++=/-=/--= 不会创造一个新的Set

创建输出

f294c1f592e47a5cac4bdd6ec254769d.png

添加元素

89cd4523d31daa0a7004e66ab0bc79f7.png

++添加

1df433eb63498a15a6cd01ee54ea362d.png

-正好相反

16cf06cc701cd0814eaa4169a509cc00.png

Set的常用方法和List相似,可以作为练习网上查询使用

访问元素 Set中没有专门的方式去访问数据,因为是无序的

如果直接使用set(0) 是判断0是否存在于set中

63ad88a8ad08c8f2364cdbde067b8ef4.png

将List转换为Set,完成去重

8089525472d484d1f31f3c71bce29e3d.png

可变Set

import scala.collection.mutable._

e1b171cd95396c4bd53b6465f850902c.png

有一个特殊的地方:一种特殊的添加元素的方式

eaddebdf1f9e8efacc2a7b29eef8b1c3.png

Map

是一种Key-Value键值对集合

创建Map

7664e7940c1c1d7fdc87d12d42e0a932.png

数据读取

05730c96925edd97c44ec48d596c9fc3.png

Get方法

7fed669b4da40f4b6748e81ef8bcd85a.png

GetOrElse

fcfddd6f1910a951410c75816638662e.png

可变Map

import scala.collection.mutable._

ca68a02c4088fe58f2be2c3761129866.png

添加元素

27a2bf7f0b1eb1dfefb54d70b6164e38.png

更新操作,如果存在就更新,不存在就插入

029285f3e42728b0a83d6dc11c0078ae.png

遍历

1ffc5093fc38173c547cdc5e305e9550.png

也可以直接key-value

6b884e5d9e50d58c45f7b9ee6ff6456a.png

其它用到时候再看

集合常用高阶函数

ccd8e825cfe6f7feabc885c4c2e5701b.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值