Scala_集合Collection

目录

 

scala集合

scala集合框架

序列Seq 

序列的几种操作

集合Set

映射Map


scala集合

  1. Scala的集合有三大类:序列Seq集合Set映射Map,所有的集合都扩展自Iterable特质
  2. Scala 集合分为可变mutable不可变immutable,分别在2个不同的包下。不可变集合 scala.collection.immutable 默认的,不需要导入的,可变集合 scala.collecion.mutable需要导入该包。
  • 可变集合可以在适当的地方被更新或扩展。这意味着你可以修改,添加,移除一个集合的元素。而不可变集合类永远不会改变。不过,你仍然可以模拟添加,移除或更新操作。但是这些操作将在每一种情况下都返回一个新的集合,同时使原来的集合不发生改变;
  • immutable类型的集合初始化后就不能改变了(注意与val修饰的变量进行区别);
  • 使用val这个关键字修饰一个变量,就意味着该变量的引用不可变,该引用中的内容是不是可变,取决于这个引用指向的集合的类型;
  • val 集合 ,该集合中的内容是否可变,取决于集合的特性

scala集合框架

 

序列Seq 

Seq  trait,继承自Iterable trait,是一组有序的、可重复的元素,元素有固定的索引位置,比如数组或列表;Seq主要有IndexedSeq与LinearSeq两种类型。

序列的几种操作

  • 索引和长度的操作:

方法:apply、isDefinedAt、length、indices、lengthCompare。序列的apply操作用于索引访问;因此,Seq[T]类型的序列也是一个以单个Int(索引下标)为参数、返回值类型为T的偏函数。换言之,Seq[T]继承自Partial Function[Int, T]。序列的length方法是collection的size方法的别名。lengthCompare方法可以比较两个序列的长度。

  • 索引检索操作:

方法:indexOf、lastIndexOf、indexofSlice、lastIndexOfSlice、indexWhere、lastIndexWhere、segmentLength、prefixLength,用于返回等于给定值或满足某个谓词的元素的索引。

  • 加法运算:

+:,:+,padTo,用于在序列的前面或者后面添加一个元素,并作为新序列返回。

  • 更新操作:

方法:updated,patch,用于替换原序列的某些元素,并作为一个新序列返回。

  • 排序操作:

方法:sorted, sortWith, sortBy,根据不同的条件对序列元素进行排序。

  • 反转操作:

方法:reverse, reverseIterator, reverseMap,用于将序列中的元素以相反的顺序排列。

  • 比较:

方法:startsWith, endsWith, contains, containsSlice, corresponds,用于对两个序列进行比较,或者在序列中查找某个元素。

  • 多集操作:

方法:intersect, diff, union, distinct,用于对两个序列中的元素进行类似集合Set的操作,或者删除重复元素。


如果一个序列是可变的(mutable),会提供一个额外的方法,update(书生:区别updated),它能让序列的元素更新。正如在Scala中,语法如seq(idx)=elem 仅仅是seq.update(idx,elem)的一个简写,可以说update给予了一些语法上的便利。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值