手机模板网站模板下载网站制作外包公司
手机模板网站模板下载,网站制作外包公司,网图搜索识别,崇礼网站建设scala的集合分为了两类#xff0c;一类是可变的集合#xff08;集合可以执行增删改查操作#xff09;#xff0c;另一类是不可变集合#xff08;集合元素在初始化的时候确定#xff0c;后续只能进行查#xff0c;有的可以进行修改#xff0c;有的不可以#xff09;。二…scala的集合分为了两类一类是可变的集合集合可以执行增删改查操作另一类是不可变集合集合元素在初始化的时候确定后续只能进行查有的可以进行修改有的不可以。二者可能名称一样但是在不同的包下面对应的包为scala.collection.mutable和scala.collection.immutable。scala默认使用的集合或者默认导入的包是immutable。说明这里提到的可变或者不可变指的是容器内部的内容 以及容器的长度可变或者不可变。
一、数组
1、不可变数组Array //第一种方式val array new Array[Int](5)//数字就是数组的个数//赋值array(1)10println(array.toBuffer)//ArrayBuffer(0, 10, 0, 0, 0)//删除//调用drop原数组保持不变返回一个新的数组//drop从左往右删除n个val arr1 array.drop(3)println(arr1.toBuffer) //ArrayBuffer(0, 0)println(array.toBuffer) //ArrayBuffer(0, 10, 0, 0, 0)//toBuffer方法可以将数组变成数组缓冲在Scala中Buffer是可变的而Array是不可变的。这就是为什么我们需要使用toBuffer方法来转换Array为Buffer的原因val bufferarray.toBufferbuffer6println(buffer)//ArrayBuffer(0, 10, 0, 0, 0, 6)//查看数组长度println(array.length)println(array.size)//判断数组当中是否包含某个元素println(array.contains(10))//创建定长数组的第二种方法//调用apply方法进行创建val arr2 Array[Int](5,2)//数字就是数组的元素println(arr2.toBuffer)//ArrayBuffer(5, 2)println(arr2(0))//5//第三种创建方式val array3 Array(1,3,4,rr)//数组的拼接val array4 Array(1,3,4,rr)//mkStringprintln(array4.mkString) //134rrprintln(array4.mkString(*)) //1*3*4*rrprintln(array4.mkString([, -, ])) //[1-3-4-rr]2、可变数组ArrayBuffer //变长数组的创建//第一种方式val arrnew ArrayBuffer[Int]()//增加元素arr.append(1,2,3)println(arr)//ArrayBuffer(1, 2, 3)//在指定位置添加元素arr.insert(2,6,7)println(arr)//ArrayBuffer(1, 2, 6, 7, 3)//删除指定位置元素arr.remove(2)println(arr)//ArrayBuffer(1, 2, 7, 3)//drop删除n个元素后返回一个新数组val arr1 arr.drop(4)println(arr1)//ArrayBuffer()//删除指定位置多个元素arr.remove(1,3)println(arr)//ArrayBuffer(1)//改元素arr(0)2println(arr)//ArrayBuffer(2)//第二种创建方式val arr2 ArrayBuffer[Int](1,2,3,4)println(arr2)//ArrayBuffer(1, 2, 3, 4)//第三种创建方式val arr3 ArrayBuffer(1,ff)arr3.append(2,df)println(arr3)//ArrayBuffer(1, ff, 2, df)//判断数组当中是否包含某个元素println(arr3.contains(9))//查看数组的长度println(arr3.size)println(arr3.length)//拼接println(arr3.mkString)println(arr3.mkString(-))println(arr3.mkString([, , ]))3、定长数组与变长数组相互转换 //定长数组转换成变长数组val arr Array(1,2,3,4)val buffer arr.toBufferprintln(buffer)//添加元素buffer.append(6,7,8)println(buffer)//ArrayBuffer(1, 2, 3, 4, 6, 7, 8)//删除元素buffer.remove(3)println(buffer)//ArrayBuffer(1, 2, 3, 6, 7, 8)//将变长数组转换成定长数组val arr1buffer.toArray4、数组遍历 val arrArray(1,2,3,4,5)//遍历第一种方式for(i-arr){println(i)}//第二种遍历方式for(i- 0 to arr.length-1){println(arr(i))}//第三种遍历方式for(i- Range(0,arr.length)){println(arr(i))}//第四种for(i- 0 until(arr.length)){println(arr(i))}//scala当中的遍历arr.foreach((x:Int)println(x))//进行简化arr.foreach(xprintln(x))arr.foreach(println(_))arr.foreach(println)}5、数组的常用函数
val arr Array(1,2,3,4,5,0,8,6,9,7)//求数组的和println(arr.sum)//45//求数组当中的最大值println(arr.max)//9//求数组中的最小值println(arr.min)//0//正序输出println(arr.sorted.toBuffer)//ArrayBuffer(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)//倒序输出println(arr.sorted.reverse.toBuffer)//ArrayBuffer(9, 8, 7, 6, 5, 4, 3, 2, 1, 0)//从左侧开始删除n个元素println(arr.drop(3).toBuffer)//ArrayBuffer(4, 5, 0, 8, 6, 9, 7)//从右侧开始删除n个元素println(arr.dropRight(4).toBuffer)//ArrayBuffer(1, 2, 3, 4, 5, 0)//从左侧开始删除到第一个不满足条件的元素后面就不再判断println(arr.dropWhile(x x 5).toBuffer)//ArrayBuffer(5, 0, 8, 6, 9, 7)//获取数组当中前n个元素println(arr.take(6).toBuffer)//ArrayBuffer(1, 2, 3, 4, 5, 0)//获取数组当中后n个元素println(arr.takeRight(4).toBuffer)//ArrayBuffer(8, 6, 9, 7)//从左往右获取元素遇到第一个不符合条件的就断开println(arr.takeWhile(x x 5).toBuffer)//ArrayBuffer(1, 2, 3, 4)//获取数组当中的头部元素println(arr.head)//1//获取尾部元素println(arr.last)//7//获取数组当中的尾部元素除了第一个其他都是尾部元素println(arr.tail.toBuffer)//ArrayBuffer(2, 3, 4, 5, 0, 8, 6, 9, 7)二、Map
k-v键值对的集合k不能重复
1、不可变Map //创建map集合val map Map[String,Int](xiaox-11,(haha-22),(xixi,33))println(map)//Map(xiaox - 11, haha - 22, xixi - 33)//删除元素//返回一个新的集合原集合不会改变val map1map.drop(1)println(map1)//Map(haha - 22, xixi - 33)//查询元素println(map(haha))//22//如果key在map中存在返回Some意思就是存在反之返回Noneprintln(map.get(xixi))//Some(33)//如果key在map中存在返回Some意思就是存在反之返回第二个参数println(map.getOrElse(hha,44))//44//查询集合长度println(map.size)//查询集合中是否包含某个元素println(map.contains(xixi))2、可变Map //默认创建的是不可变的集合想要变成可变集合需要导包import scala.collection.mutable._//创建map集合val map Map(zhangs-11,xiaox-22)println(map)//改变元素的value值map(zhangs)33println(map)//增加元素第一种map.put(haha,18)println(map)//增加元素第二种map(xixi-20)println(map)//增加元素第三种map((ttt,44))println(map)//删除元素map.remove(ttt)println(map)//查询元素println(map(haha))println(map.get(xixi))println(map.getOrElse(zhang,999))3、map集合的遍历
val map Map[String,Int](xiaox-11,(haha-22),(xixi,33))println(map)//第一种方式for((k,v)-map){println(s$k---$v)}//第二种方式for(i-map){println(i)}//第三种只要keyfor(i-map.keys){println(i)}//第四种只要valuesfor(i-map.values){println(i)}//foreach遍历map.foreach(println)map.foreach(xprintln(x._1))//打印keymap.foreach(xprintln(x._2))//打印valuesmap.keys.foreach((k:String)println(k))map.keys.foreach(println)map.values.foreach((v:Int)println(v))map.values.foreach(println)三、元组Tuple
元组是不同类型的值的聚集。元组的值是通过将单个的值包含在圆括号中构成的。例如(1, 3.14, “Fred”)是一个元组,最长可以容纳22个元素
//创建元组val tuple new Tuple2[String,Int](hello,4)//创建元组第二种val tuple1(1,hhh,3.4,true)//获取元组中指定元素println(tuple._2)//4println(tuple1._3)//3.4//如果想让元组当中元素下角标从0开始需要调用方法默认从1开始println(tuple1.productElement(3))//获取元组的长度println(tuple.productArity)//2//元组遍历for(i-tuple1.productIterator){println(i)}tuple.productIterator.foreach(println)四、Zip拉链操作
zip操作就是将两个单列的集合组合成双列的集合集合中的每一组元素就是上述学习过的tuple。在组合两个集合的时候集合元素两两一一对应如果两个集合的长度不一致将超过的部分,或者没有匹配上的部分进行裁剪丢弃。 //拉链测试//创建数组val arr1 Array(lufei,xiangkesi,luojie,sabo,heihuzi)val arr2 Array(13,23,34,21,77,99,55)//zip:进行拉链操作val resarr1.zip(arr2)println(res.toBuffer)//ArrayBuffer((lufei,13), (xiangkesi,23), (luojie,34), (sabo,21), (heihuzi,77))//zipAll 第二个参数是左边数组如果空缺就补全”haha“,第三个参数是如果右边数组空缺就补全111val resul arr1.zipAll(arr2,haha,111)println(resul.toBuffer)//ArrayBuffer((lufei,13), (xiangkesi,23), (luojie,34), (sabo,21), (heihuzi,77), (haha,99), (haha,55))//zipWithIndex 给调用的数组右边补上索引println(arr1.zipWithIndex.toBuffer)//ArrayBuffer((lufei,0), (xiangkesi,1), (luojie,2), (sabo,3), (heihuzi,4))
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/89272.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!