一、数组Array
1.创建数组
隐式:val greetStrings = new Array[String](3);
显式:val greetStrings : Array[String] = new Arrray[String](3);
2.赋值
(1)greetStrings(0) = "hello";
greetStrings(1) = ",";
greetStrings(2) = "world\n"; //注意,后边是括号(),并不是[ ]
(2)val greetStrings = Array("hello",",","world\n");//编译器会推断出数组的类型为Array[String],同样后边是()并不是[ ]
(3)greetStings.update(0,"Hello");//改变0位置的元素
3.遍历
for(i <- 0 until greetStrings.length)
println(i + ":" + greetingString(i));
二、列表list
1.创建列表
val oneTwoThree = List(1,2,3);
val oneTwoThree:List[Int] = List(1,2,3); //注意,因为list不可变不能向数组那样,先实例再赋值,必须实例的时候就进行赋值。
2.遍历
(1)for(i <- 0 until oneTwoThree.length)
println(i + ":" + oneTwoThree(i));//同数组,随机访问是list(i),不是list[i]
(2)println(oneTwoThree); //注意数组不能这么直接打印
(3)oneTwoThree.foreach(print)
3.列表拼接
(1)List有个办法叫“:::”用于两个列表拼接。
val one = List(1,2);
val two = List(3,4);
var oneAddTwo = one ::: two;
(2)在已有列表前添加一个元素 “::”
val three = 5 :: one ;
val one = 1 :: 2 :: Nil; //创建一个one = List(1,2);Nil代表一个空List。
有同学要问,为什么不在list表尾添加元素呢,非要在表头添加呢?其实List.append(或 + )方法提供了在list表尾添加元素的功能。
但是在结尾添加元素的操作时间随着列表的大小线性增加,而使用::在表头添加的话只需要常量时间。
如果非要在表尾添加元素,我们可以通过依次在表头添加,然后调用list.reverse方法反序列表,达成高效建表。
(3)一些常用方法
val thrill = “will” :: "fill" :: "until" :: Nil;
thrill.count(s =>s.length == 4); //对thrill中长度为4的字符串进行计数,返回2
thrill.drop(2);//返回去掉了头两个元素的列表
thrill.dropRight(2);//返回去掉尾两个元素的列表
thrill.exist(s => s == "until");//判断thrill中是否含有“until”
thrill.filter(s => s.length ==4); //返回thrill中长度为4的元素
thrill.filterNot(s => s.length ==4); //返回thrill中长度不为4的元素
thrill.forall(s => s.endsWith("l"));//判断thrill是否所有元素都以l结尾,返回boolean
thrill.foreach(print);//遍历
thrill.head;//返回thrill的首个元素
thrill.last;//返回最后一个元素
thrill.init;//返回列表除了最后一个元素外的其他元素组成的列表
thrill.tail;//返回除了第一个元素之外的其他元素组成的列表
thrill.isEmpty;//是否为空
thrill.length;//长度
thrill.map(s => s+"y");//对列表的每一个元素加上y
thrill.mkString(",");//返回用列表所有元素组成的字符串,“Will,fill,until”
thrill.reverse ;//列表反转
thrill sort((s,t) => s.charAt(0)toLower > t.charAt(0)toLower) ;//对首字符进行排序
三、数组和列表的联系与区别
Scala数组是一个拥有相同类型的对象的可变序列,也就是说一个数组中只能包含相同类型的元素。虽然无法在数组实例化以后改变其长度,但是却可以改变它的元素值,因此,数组是可变的对象
Scala列表,跟数组类似只能包含相同类型的元素,但是列表是不可变的,每次改变List的操作都会返回一个新的List,这有点类似于JAVA里的String呀有木有。
注意,Scala中的List和JAVA中的List虽然拥有相同的名字,但是可不是一个东西,区别很大。