Scala常用集合概述
Scala的集合分为可变集合与不可变集合,可变集合表示这个集合中的元素可被添加,更新,删除。不可变集合表示对此集合操作以后会产生一个新的集合,而原来这个集合不改变。
所有的集合都在scala.collection包下面并且分为两类
在scala.collection.mutable都是可变集合,在scala.collection.immutable里都是不可变集合。
这是scala.collection.immutable包下的集合的继承关系
这是加入了scala.collection.mutable后所有集合的继承关系
下面我介绍几个常用的集合及操作
Traversable表明所有子类都可以被遍历
lterable表示这些集合都可进行迭代操作
Set:无序元素
Seq:有序元素
Map:映射
- List:里面所有类型一样,且不可变,下面是List的常见操作
//两种初始化List的方式,::可以用来连接各元素 val fruit=1::2::3::Nil val animal=List("tiger","dog","pig") //两个List可以相连 val fa=fruit++animal //依次为访问List头,尾元素,List是否为空,查找List中指定元素的位置,根据索引(以0开始)访问List fa.head fa.tail fa.isEmpty fa.indexOf(0) fa.apply(4) //根据特定条件过滤掉部分元素,注意fa并没有改变,此时产生一个新的List val fa1=fa.filter(x=>x!=1) //将List每个元素映射成另一个元素 val fa2=fa.map(x=>x+"1") //flatMap将嵌套List变成一层List val fa3=List(1,2,3) //List(List(0, 1, 2), List(1, 2, 3), List(2, 3, 4)) val fa4=fa3.map(x=>g(x)) //List(0, 1, 2, 1, 2, 3, 2, 3, 4) val fa5=fa3.flatMap(x=>g(x)) //向左规约,即从最左边其将第一第二个元素实行操作,并将操作结果 //当成下次操作的参数之一与三个元素实现操作,直到最右边,结果是18 fa5.reduceLeft((x,y)=>x+y) //4表示初始值,y表示List中的下一个元素,x表示上次的结果,结果是10 val fa6=fa3.foldLeft(4)((x,y)=>x+y) ... ... def g(v:Int)=List(v-1,v,v+1)
- Tuple:并不是集合,是一个系列不同对象的集合,一共可有22个Tuple,个人觉得类似于java中的枚举类型。
//初始化语法 val things=("1",2,200.0) //取得tuple的第一个元素 things._1 //证明它是一个类,结果是class scala.Tuple3 things.getClass //使用模式匹配为things元素命名,string对应的值就是"1" val (string,number,float)=things //遍历输出tuple中的每一个元素 things.productIterator.foreach(println)
- Map:一组映射关系的管理
//初始语法 val map=Map(1->"J",2->"Z",3->"B") //指定key访问元素 println(map(1)) //判断Key是否在元素里面 println(map.contains(4)) //Map中添加元素 map+(4->"Z") //Map中删除元素 map-3 //添加多个元素 val map2=map++List(5->"W",6->"C") //删除多个元素 val map1=map--List(1,2,3)
- Seq:与List类似,不同点在于他内部的对象是有顺序的,在此不多做说明了。
相关推荐
shenwenjie 2020-07-07
yunfenglee 2020-07-08
匆匆那些年 2020-10-15
TheBigBlue 2020-07-28
muhongdi 2020-07-07
waitwolf 2020-07-08
yunfenglee 2020-07-08
kekeromer 2020-07-08
匆匆那些年 2020-07-07
liqinglin0 2020-07-05
TheBigBlue 2020-07-05
kekeromer 2020-06-13
zhixingheyitian 2020-06-08
TheBigBlue 2020-06-06
liqinglin0 2020-06-01
liqinglin0 2020-06-01
yunfenglee 2020-05-30
MICKEYSTUDY 2020-05-28
muhongdi 2020-05-19