scala集合的说明

首先我们来了解Iterable特质,所有集合都继承自它


scala集合的说明_第1张图片
image.png

上图所示的关系说明集合之间的联系
IndexedSeq是数组的超类型
序列
关系图如下:


scala集合的说明_第2张图片
image.png

Vector是ArrayBuffer的不可变版本:一个带下标的序列,其支持快速的随机访问,向量是以树形的结构实现的。
Range是一个整数序列,如Range(1,2,3,4,5,....)

列表
在scala中,列表要么是Nil,要么是一个head元素,加上一个tail,tail又是一个列表
如val ls=List(1,2)
所以在ls中,ls.head是1,ls.tail是2,再进一步,ls.head是2,ls.tail是Nil
举例如下:
val ls = List(1,2,3)
val tail = ls.tail
val head = ls.head
println(tail)//List(2, 3)
println(head)//1
总之记住,列表只有头和尾。
::操作符是指从指定的头或者尾创建一个新的列表,举例如下:
val ls = 9::List(7,8) -----List(9,7,8)
List(7,8)::9 -----List(7,8,9)
或者像这样写:
val ls = 9::7::8::Nil ----List(9,7,8)
如果想修改可变列表的元素,用ListBuffer


set集是以hash集实现的,并不保证顺序。
union,intersect,diff方法是通常的集操作
并集也可以写成++,差集也可以写成--

操作符
val seq = Seq(1,2,3,4,5,6)
val i = seq(2) 等同于seq.apply(2)
seq:+7向后追加,seq+:7向前追加
val ls1 = List(1,2,3)
val ls2 = List(4,5,6)
val ls3 = 7::ls2
val ls4 = ls1:::ls2
val ls5 = ls1++ls2
ls4和ls5是等同的。

总结如下:
scala添加了很多用于添加和移除元素的操作符
1,向后(:+)或者向前(+:)追加元素到序列当中。
2,添加(+)元素到无先后次序的集合中
3,用-操作符移除元素
4,用++和--来批量添加和移除元素
5,对于列表,scala赢优先选择::和:::操作符
7,尽量别用++:,+=:和++=:

slice(from,to)与view(from,to)方式是等价的。
与java中类似
List list = Arrays.asList("a", "b", "c", "d", "e", "f", "g");
List ls = list.subList(0, 3);

map和transform的使用
transform一般用于可变集合,当场执行不需要返回。
map都可以使用,但是需要返回。
val buffer = ArrayBuffer("peter", "paul", "mary")
val buffer1 = buffer.map(ls => ls.toUpperCase)
println(buffer1)
buffer.transform(l => l.toUpperCase)
println(buffer)

你可能感兴趣的:(scala集合的说明)