Scala入门(续)-数组Set/List/排序
Posted 健哥说编程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scala入门(续)-数组Set/List/排序相关的知识,希望对你有一定的参考价值。
Scala入门(续)
1、类型和参数化数组
可以使用new来创建实例化对象:
scala> val big = new java.math.BigInteger("12345")
big: java.math.BigInteger = 12345
实例化数组:
scala> val strs = new Array[String](3)
strs: Array[String] = Array(null, null, null)
scala> strs(0)="Jack"
scala> strs(1)="Mary"
scala> strs(2)="Alex"
scala> print(strs)
[Ljava.lang.String;@7983a5d5
遍历:
scala> for(i <- 0 to 2){
| println(strs(i))
| }
Jack
Mary
Alex
2、数组的下标
Scala使用()圆括号来指定下标,而不是[]中括号:
scala> val arr = Array("Jack","Mary")
arr: Array[String] = Array(Jack, Mary)
scala> arr(0)
res18: String = Jack
Arr(0)表示的就是arr.apply(0),apply是数组的一上方法:
scala> arr.apply(0)
res19: String = Jack
3、创建数组的方式
快速方法创建数组:
scala> val arr = Array("Jack","Mary")
arr: Array[String] = Array(Jack, Mary)
本质创建数组的方式是: 以下apply方法,可以接收一个变长的参数列表:
scala> val arr = Array.apply("Jack","Jim","Rose")
arr: Array[String] = Array(Jack, Jim, Rose)
4、列表list
列表list是不可变的,对列表进行操作,总会返回一个新的list列表。
scala> val list = List(1,2,3)
list: List[Int] = List(1, 2, 3)
或指定数据类型:
scala> val list = List[Int](33,44,55)
list: List[Int] = List(33, 44, 55)
5、列表操作符号
1、:::合并两个列表返回一个新的列表
scala> val list1 = List("Jack","Mary")
list1: List[String] = List(Jack, Mary)
scala> val list2 = List("Alex","Rose")
list2: List[String] = List(Alex, Rose)
以下合并两个列表:
scala> list1:::list2
res20: List[String] = List(Jack, Mary, Alex, Rose)
scala> res20
res21: List[String] = List(Jack, Mary, Alex, Rose)
2、::发生列表上,它是方法
scala> "Jerry"::list2
res22: List[String] = List(Jerry, Alex, Rose)
等同于以下方法:
scala> list2.::("Smith")
res23: List[String] = List(Smith, Alex, Rose)
说明:因为::是List的方法,所以可以写成:List.::(Value)
1、使用Nil快速初始化一个列表
初始化一个空列表:
scala> val nn = Nil
nn: scala.collection.immutable.Nil.type = List()
将1,2,3追加到列表中去,很追加3,再追加2,最后追加1,所以1在最前面:
scala> val nn = 1::2::3::Nil
nn: List[Int] = List(1, 2, 3)
等同于方法.::
scala> val nn = Nil.::(1)
nn: List[Int] = List(1)
等同于方法:.::
scala> val nn = Nil.::(1).::(2)
nn: List[Int] = List(2, 1)
6、列表List的一些方法
1、快速声明一个列表:
scala> val a = "Jack"::"Mary"::Nil
a: List[String] = List(Jack, Mary)
2、合并两个列表:
scala> val b = List("A","B"):::List("C","D")
b: List[String] = List(A, B, C, D)
3、获取某个列表,指定下标的元素:
scala> b(2)
res1: String = C
scala> b.apply(2)
res2: String = C
4、对列表中,的元素,长度大于,等于多少的进行计数:
以下求列表中的元素长度大于0的进行计数,就是求列表元素的个数呗:
scala> b.count(c=>c.length>0)
res8: Int = 4
列表中的元素长度等于1的个数:
scala> b.count(c=>c.length==1)
res9: Int = 4
5、删除前N个元素,返回一个新的列表:
scala> b.drop(2)
res10: List[String] = List(C, D)
scala> res10.drop(2)
res11: List[String] = List()
6、从右边开始删除N个元素:
scala> val list = "A"::"B"::"C"::Nil
list: List[String] = List(A, B, C)
scala> list
res12: List[String] = List(A, B, C)
执行删除右边的一个元素,C被删除:
scala> list.dropRight(1)
res13: List[String] = List(A, B)
7、判断某个元素是否存在
scala> list.exists(x=>x=="A")
res14: Boolean = true
scala> list.exists(x=>x=="B")
res15: Boolean = true
8、过虑元素
scala> list.filter(x=>x.length==1)
res16: List[String] = List(A, B, C)
scala> list.filter(x=>x=="A")
res17: List[String] = List(A)
以下过虑将显示名称中包含a元素的:
scala> val list = "Jack"::"Jerry"::"Mary"::"Mark"::Nil
list: List[String] = List(Jack, Jerry, Mary, Mark)
scala> list.filter(x=>x.contains("a"))
res18: List[String] = List(Jack, Mary, Mark)
9、判断是否都具有相同的属性
如判断是否值都是Jack
scala> list.forall(x=>x=="Jack")
res19: Boolean = false
如判断是否都包含a这个字母:
scala> res18.forall(x=>x.contains("a"))
res20: Boolean = true
10、遍历foreach
scala> list.foreach(x=>println(x))
Jack
Jerry
Mary
Mark
或是使用更简单的语法:
scala> list.foreach(println)
Jack
Jerry
Mary
Mark
11、第一个元素
scala> list.head
res23: String = Jack
12、除最后一个元素外的所有元素
原来的所有元素:
scala> list
res25: List[String] = List(Jack, Jerry, Mary, Mark)
通过init只取除最后一个元素所有元素:
scala> list.init
res24: List[String] = List(Jack, Jerry, Mary)
13、判断是否为空
scala> list.isEmpty
res26: Boolean = false
14、last最后一个元素
scala> list.last
res27: String = Mark
15、length长度
scala> list.length
res28: Int = 4
15、影射并返回一个全新的元素
以下示例,将所有元素后面添加1
scala> list.map(x=>x+"1")
res29: List[String] = List(Jack1, Jerry1, Mary1, Mark1)
16、将数组转换成字符串
以下使用,逗号分开所有元素
scala> val str=list.mkString(",")
str: String = Jack,Jerry,Mary,Mark
17、filterNot过虑非
以下过虑,将会去除所有包含a字符的元素
scala> list.filterNot(x=>x.contains("a"))
res30: List[String] = List(Jerry)
18、倒序
scala> list.reverse
res31: List[String] = List(Mark, Mary, Jerry, Jack)
19、排序
在scala2.11.7中使用的是sort方法,在scala2.11.8中使用的sortWith,还是感觉sortWith更好用:
小于为0正序:
scala> list.sortWith((x,y)=>x.compareTo(y)<0)
res42: List[String] = List(Jack, Jerry, Mark, Mary)
大于0为倒序:
scala> list.sortWith((x,y)=>x.compareTo(y)>0)
res43: List[String] = List(Mary, Mark, Jerry, Jack)
以下是排序整数的元素:
scala> list2.sortWith((x,y)=>x-y<0)
res46: List[Int] = List(1, 3, 8)
scala> list2.sortWith((x,y)=>x-y>0)
res47: List[Int] = List(8, 3, 1)
20、除第一个元素之外的其他元素
scala> list.tail
res37: List[String] = List(Jerry, Mary, Mark)
以上是关于Scala入门(续)-数组Set/List/排序的主要内容,如果未能解决你的问题,请参考以下文章