/**
scala的集合类型(Collection)包含如下常见的类型:
Array,List,Set,Range,Iterator,Map,Tuple
知识点
1.scala的Array分为定长数组和变长数组
2.定长:immutable
3.变长:mutable
4.通过下标操作Array,下标从0开始。通过(index),不同于java的[index]
*/
object Demo {
println("Welcome to the Scala worksheet") //> Welcome to the Scala worksheet
//创建一个定长数组并赋值
val a1=Array(1,2,3,4) //> a1 : Array[Int] = Array(1, 2, 3, 4)
//创建一个定长数组,指定泛型以及长度
val a2=new Array[Int](3) //> a2 : Array[Int] = Array(0, 0, 0)
//创建变长数组并赋值。可以追加新元素的
val a3=scala.collection.mutable.ArrayBuffer(1,2,3,4)
//> a3 : scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 2, 3, 4)
//通过下标取值
a1.apply(0) //> res0: Int = 1
a1(0) //> res1: Int = 1
//通过下标赋值
a1(0)=10
a1 //> res2: Array[Int] = Array(10, 2, 3, 4)
//对变长Array追加数据
a3.append(5,6)
a3 //> res3: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 2, 3, 4, 5,
//| 6)
//常用且重要的方法
val a4=Array(2,1,3,5,4) //> a4 : Array[Int] = Array(2, 1, 3, 5, 4)
//最大值
val r1=a4.max //> r1 : Int = 5
//最小值
val r2=a4.min //> r2 : Int = 1
//求和
val r3=a4.sum //> r3 : Int = 15
//练习1:求出a4的均值
val r4=a4.sum/a4.length //> r4 : Int = 3
//取出前n个元素,并返回到新的集合中
val r5=a4.take(2) //> r5 : Array[Int] = Array(2, 1)
//取出后n个元素,并返回到新的集合中
val r6=a4.takeRight(2) //> r6 : Array[Int] = Array(5, 4)
//删除前n项元素,并返回剩余元素到新的集合中
val r7=a4.drop(2) //> r7 : Array[Int] = Array(3, 5, 4)
//删除后n项元素,并返回剩余元素到新的集合中
val r8=a4.dropRight(2) //> r8 : Array[Int] = Array(2, 1, 3)
val a5=Array(2,1,5,2,6,8,9) //> a5 : Array[Int] = Array(2, 1, 5, 2, 6, 8, 9)
//练习2:计算出a5中间项(刨除首项和尾项)的极差(最大值-最小值)
val r9=a5.drop(1).dropRight(1) //> r9 : Array[Int] = Array(1, 5, 2, 6, 8)
val r10=r9.max-r9.min //> r10 : Int = 7
//返回集合的头元素,有别于take(1)
val r11=a5.head //> r11 : Int = 2
val r12=a5.take(1) //> r12 : Array[Int] = Array(2)
//返回集合尾元素,有别于takeRight(1)
val r13=a5.last //> r13 : Int = 9
val r14=a5.takeRight(1) //> r14 : Array[Int] = Array(9)
val a6=Array(1,2,3) //> a6 : Array[Int] = Array(1, 2, 3)
val a7=Array(3,4,5) //> a7 : Array[Int] = Array(3, 4, 5)
//并集
val r15=a6.union(a7) //> r15 : Array[Int] = Array(1, 2, 3, 3, 4, 5)
//交集,返回相同的数据到新的集合中
val r16=a6.intersect(a7) //> r16 : Array[Int] = Array(3)
//差集,返回相异的数据到新的集合中。
//注意取差集时的方向
val r17=a6.diff(a7) //> r17 : Array[Int] = Array(1, 2)
val r18=a7.diff(a6) //> r18 : Array[Int] = Array(4, 5)
//去掉重复元素,并返回到一个新的集合中
val r19=r15.distinct //> r19 : Array[Int] = Array(1, 2, 3, 4, 5)
val a8=Array("hello","scala","2002") //> a8 : Array[String] = Array(hello, scala, 2002)
//翻转方法
val r20=a8.reverse //> r20 : Array[String] = Array(2002, scala, hello)
//将集合中所有的数据返回为一个字符串,可以指定分隔符
val r21=a8.mkString //> r21 : String = helloscala2002
val r22=a8.mkString("#") //> r22 : String = hello#scala#2002
val a9=Array(1,2,3,4,5) //> a9 : Array[Int] = Array(1, 2, 3, 4, 5)
val r23=a9.mkString //> r23 : String = 12345
//filter:过滤方法。根据传入的匿名函数实现过滤
//比如过滤出a9中大于3的所有元素
val r24=a9.filter {num=>num>3 } //> r24 : Array[Int] = Array(4, 5)
//练习3:过滤出a9中大于2的偶数元素
val r25=a9.filter { num =>num>2&&num%2==0 }
//> r25 : Array[Int] = Array(4)
//练习4:过滤出a10所有的男性数据
val a10=Array("tom M 23","rose F 18","jim M 25")
//> a10 : Array[String] = Array(tom M 23, rose F 18, jim M 25)
val r26=a10.filter { line =>line.contains("M") }
//> r26 : Array[String] = Array(tom M 23, jim M 25)
val r27=a10.filter { line =>line.split(" ")(1).equals("M") }
//> r27 : Array[String] = Array(tom M 23, jim M 25)
//scala的类型转换,格式固定,to指定类型
val v1=100 //> v1 : Int = 100
v1.toString() //> res4: String = 100
v1.toDouble //> res5: Double = 100.0
val v2="100" //> v2 : String = 100
v2.toInt //> res6: Int = 100
//练习5:过滤出a10中,年龄大于20的所有数据
val r28=a10.filter { line => line.split(" ")(2).toInt>20 }
//> r28 : Array[String] = Array(tom M 23, jim M 25)
}
Scala学习-6.1集合类型
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 本教程介绍了Kang等人(2017)的[https://www.nature.com/articles/nbt.4...
- 基础类型 Swift通过var进行变量定义,通过let进行常量定义 Swift添加了类型推断,对于赋值的常量或者变...
- 数据类型 可以看出 scala 与java 中的类型基本上是一一对应的,不同的是 scala 中的字符类型首字母都...