经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Scala » 查看文章
Scala集合学习总结
来源:cnblogs  作者:codegeekgao  时间:2018/9/28 16:53:57  对本文有异议

遍历集合可以使用迭代器iterator的那套迭代方式。Seq是一个有先后次序的序列,比如数组或列表。IndexedSeq可以通过下标进行任意元素的访问。例如ArrrayBuffer。
Set是一组没有先后次序的值,在SortedSet中,元素以某种排过序的顺序被访问。
Map是一组(键,值)对偶,SortedMap按照键的顺序访问实体
Scala集合有三个基本操作:
head 返回集合第一个元素
tail 返回一个集合,包含除了第一元素之外的其他元素
isEmpty 在集合为空时返回true

  • 可变和不可变的集合
  1. Scala同时支持可变的和不可变的集合,不可变的集合从不改变,因此不可变集合是线程安全的集合,例如有:scala.collection.mutable.Map,也有scala.collection.immutable.Map。它们有一个共有的超类型scala.collection.Map
  2. Scala优先采用不可变集合。scala.collection包中的伴生对象产出不可变的集合例如:scala.collection.Map("hello" -> 42)是一个不可变的映射
  • 添加元素和移除元素的操作符

    1. 向后(:+)或向前(+:)追加元素到序列当中
    2. 添加(+)元素到无先后次序的集合中
    3. 用-移除元素
    4. 用++和--来批量添加和移除元素
    5. 对于列表优先使用::和:::
    6. 改值操作有+=,++=,-=,--=
    7. 对于集合,使用++,&和--
    8. 尽量不用++:,+=:和++=:
  1. def main(args: Array[String]): Unit = {
  2. // 初始化构建元素个数为4的集合对象
  3. val v = Vector(1, 2, 3, 4)
  4. // 添加集合后添加5(新建集合添加5)
  5. println(v :+ 5)
  6. // 集合前添加0(新建集合添加0)
  7. println(5 +: v)
  8. // 初始化构建高效数组缓存
  9. val array = ArrayBuffer(1, 2, 3, 4)
  10. // 添加元素5
  11. println(array += 5)
  12. // 删除元素1
  13. println(array -= 1)
  14. // 初始化Set集合对象
  15. val number = Set(1, 2, 3)
  16. // 添加4元素(新建set集合添加4)
  17. println(number + 4)
  18. // 添加4元素(新建set集合移除3)
  19. println(number - 3)
  20. // 使用++添加多个set元素(结果为无序的)
  21. println(number ++ Set(4, 5, 6))
  22. }
  23. }
  24. 可以使用++一次添加多个元素,也可以使用--一次删除多个元素
  • 将函数映射到集合
    有时候可以对元素进行变换,map方法可以将某个函数应用到集合每个元素并进行相应的元素处理
  1. // 初始化创建List集合映射map
  2. val name = List("Bob", "Michael", "Marry")
  3. println(name.map(_.toUpperCase))
  4. val result = for (n <- name) yield n.toUpperCase
  5. println(result)
  6. // 拼接字符串
  7. def unclase(string: String) = Vector(string.toLowerCase(), string.toUpperCase())
  8. println(name.flatMap(unclase))
  • 与java集合相互转换
  1. import scala.collection.JavaConversions._
  2. 需要手动导入,在项目中发现不手动导入这个,idea编辑器编译器会报错

常见转换api

隐式函数 java集合类型
asjavaEnumeration Enumeration
setAsJavaSet Set
mapAsJavaMap Map
bufferAsJavaList List
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号