scala集合浅谈

一直都不太明白函数式编程是什么鬼(这个也是自己以后在使用scala中慢慢需要着重理解的,感觉和js有点差不多),只是感觉它的语法怪怪的,大概写一下感觉比较重要的东西吧。

1.简述声明List的3种方式

1>常见的声明方式:var list

2>::(2个冒号)+Nil的方式:val data2=10::(20::30::15::Nil)

3>与模式进行结合

list中常用的一阶函数:

 tail :List集合中除第一个元素以外其他元素的集合

init :List集合中除最后一个元素以外其他元素的集合

:::含义:将多个List集合联合起来,合成一个新的集合

take(n):获取前n个元素的集合

drop(n):去除掉List前n个元素后剩下元素的集合

splitAt(n):将List集合拆分成若干个集合

head:返回List集合中的第一个元素

last:返回list集合中的最后一个元素

length:List集合中元素的个数

reverse:List集合中的元素进行反转

indices:取出List集合中所有元素对应的索引

zip:可以将多个集合进行拉链操作,就是配对

zipWithIndex:将List中的元素与索引进行配对构成新的集合

mkString:将List集合中的元素按照指定的格式进行输出,mkString方法在spark中将数据进行格式化输出的时候非常有用

toIterator:返回能够遍历当前集合中所有元素的迭代器

toList方法常与map和flatMap进行结合使用,toListz作用在具体的字符串上面可以将字符串的list集合变成字符的list集合

map就是对集合中所有元素执行一个具体的函数,将函数作用在数值上,并返回一个新的集合的结果。

flatMap:首先对List内部的每个成员进行map操作,然后再产生结果的基础上,进行合并,产生合并之后的集合。

foreach:就是对集合中的每一个元素执行一个具体的函数,将函数作用在数值上,与map不同的是,foreach不产生具体的结果,结果是Unit类型的。

filter:过滤出列表中符合条件的元素,filter结构中传进来的参数是一个结构为布尔类型的函数。

List集合中常用的操作

partition:对集合中的元素按照某种条件进行分区

span:spand的操作类似于partition,将集合分成不同的区域

find:找出集合中第一个满足条件的元素,返回值为Some或者None

takeWhile:获取集合当中所有满足条件的元素

dropWhile:获取集合当中满足条件以外的元素

forall:只有集合当中所有元素满足条件时才返回true,否则返回false

exists:只要集合中存在一个元素满足条件就返回true

简述List中foldLeft foldRight sort函数的具体使用

foldLeft 函数体执行两元素从左到右,foldRight:函数体执行两元素操作从右到左

scala中的sortWith排序算法效率还是很高的,为线性

List中伴生对象中常用方法:

List本身是一个抽象类,抽象类不能定义处抽象类的实例对象,只能定义处抽象类的引用

List的object(伴生对象)中常用方法:

apply:构造一个List实例对象

range:指定一个范围是左闭右开的List对象,同时可以指定两个元素之间的步长

zip:拉链操作 unzip:反拉链操作  将之前zip获得的集合结果进行反操作,生成两个List集合

flatten与concat:将List内部集合中的所有元素联合构成一个新的集合,即统一构成一个list

ListBuffer  ArrayBuffer分别是List与Array的新版本

Queue(队列)与Stack(堆)是两种经典的数据结构

scala中有可变集合和不可变集合之分,不可变集合就是本身是不可变的,对于不可变集合每次操作都会产生一个新的集合。

默认情况下,scala鼓励我们使用不可变对象进行编程,因此在头文件中默认引入的都是不可变的类对象。

对于Set和Map来说,元素放进去之后是没有顺序的,如果希望元素放进去之后是有顺序的可以用treeSet和treeMap存储数据,凡是将类对象放到以Tree为内部存储结构的容器中

相应的类对象按照升序进行排列







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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值