读书人

scala器皿对象 - 1

发布时间: 2012-12-19 14:13:14 作者: rapoo

scala容器对象 - 1

编程语言中容器对象总是很重要的一块东西,记得java开发时用的最多的就是List什么的。学习scala当然也少不了这一块了,下面把学习过程分享给大家。

1Array 数组

Scala的数组是这个样子:


valarr = newArray[String](3)

?

程序员们基本都看得懂,new一个Array对象,它的类型是String,长度为3。对元素赋值的操作如下:

?

arr(0)= "alan"

arr(1)= "stef"

arr(2)= "boy"

?

和Java的不大一样,java是用[]来表示数组元素位置,而scala的赋值其实就是一个update方法了,方法当然是用小括号了。

变量(参数)表示:变量.apply(参数)

变量(参数)=XX表示:变量.update(参数,XX)

下面是遍历元素:

?

for(i <- 0 to2)

print(arr(i))


其中0 to 2 中是数字0调用to方法,to方法的参数是2。


看一下一个更简洁的方法来创建数组:


valnumNames= Array("zero","one","two")


scala的类型推断会断定numNames的类型为Array[String],同样也可以理解为Array.apply(XXX)。

2List

scala中,Array和List很重要的区别是:Array是可变对象,虽然其长度不可变,但是它的每个元素都可以更换,而其对象仍然是一个对象;List是不可变对象,创建后你对它进行任何更系操作,返回的都是一个新的List,就像java中的String对象一样。所以,List是设计给函数式编程使用的。

List和Array一样,元素必须要具有相同的类型。

List[T]来说,如果其类型T有继承关系,那么List[T]也有继承关系,就是说List[Object]是List[Int]的超类。

空的List(List())的类型是Nothing。


valempty: List[Nothing] = List()


2.1创建

看一下如何创建一个List:


valoneTwoThree= List(1,2, 3)


2.2合并List

一个叫做“:::”的方法,可以把两个List连接在一起。


valoneTwo= List(1,2)

valthreeFour = List(3, 4)

valoneTwoThreeFour = oneTwo ::: threeFour //List(1, 2, 3, 4)


还有一个双冒号“::”的方法用来连接一个元素和List,这个元素会在List的最前端:


valtwoThree= List(2,3)

valoneTwoThree = 1 :: twoThree // List(1,2, 3)


有一点要说明,上面的方法(::)是List的方法,虽然List在方法的左边。稍微追究一下就是已冒号结尾的方法名会被方法的右操作参数调用,其他时候是被左操作参数调用的。


这个方法配合Nil可以定义List:

valoneTwoThree =1 :: 2 :: 3 :: Nil


2.3append?

由于效率原因,List没有提供append操作(随着列表变长其操作耗时会线性增长),而::花费常量时间。所以需要append时,可以reverse、::、reverse。也可已使用ListBuffer类,使用之后提供toList进行转换。


2.4基础操作

2.4.1(int)

相当于get,返回索引上的元素,索引是从0开始计算的。

2.4.2count

获取元素个数。


thrill.count(s=> s.length == 4)


上面计算长度为4的元素的个数。


2.4.3drop(int)

去掉前面几个元素


2.4.4dropRight(int)

去掉后面几个元素


2.4.5exists

thrill.exists(s=>s == "until")

判断是否存在某个元素。


2.4.6filter

thrill.filter(s=>s == "until")

过滤元素


2.4.7forall

thrill.forall(s=>s == "until")

判断是不是所有元素都是util。


2.4.8foreach

thrill.foreach(s=>print(s))

便利元素执行操作。


2.4.9head

返回第一个元素,无参函数


2.4.10init

出去最后一个元素之外的所有的元素。


2.4.11isEmpty


2.4.12last


2.4.13length


2.4.14map

加工元素,返回一个新的List。

thrill.map(s=>s + "y")


2.4.15mkString

用指定分割符号连接所有元素,返回字符串。

thrill.mkString(",")


2.4.16remove

删除部分元素

thrill.remove(s=> s.length == 4)


2.4.17reverse


2.4.18sort

排序

thrill.sort((s,t) =>

s.charAt(0).toLowerCase <

t.charAt(0).toLowerCase)

2.4.19tail

返回去掉第一个元素的所有元素。

读书人网 >编程

热点推荐