zoukankan      html  css  js  c++  java
  • Scala集合学习总结

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

    • 可变和不可变的集合
    Scala同时支持可变的和不可变的集合,不可变的集合从不改变,因此不可变集合是线程安全的集合,例如有:scala.collection.mutable.Map,也有scala.collection.immutable.Map。它们有一个共有的超类型scala.collection.Map
    Scala优先采用不可变集合。scala.collection包中的伴生对象产出不可变的集合例如:scala.collection.Map("hello" -> 42)是一个不可变的映射
    
    • 添加元素和移除元素的操作符
    1. 向后(:+)或向前(+:)追加元素到序列当中
    2. 添加(+)元素到无先后次序的集合中
    3. 用-移除元素
    4. 用++和--来批量添加和移除元素
    5. 对于列表优先使用::和:::
    6. 改值操作有+=,++=,-=,--=
    7. 对于集合,使用++,&和--
    8. 尽量不用++:,+=:和++=:
      def main(args: Array[String]): Unit = {
        // 初始化构建元素个数为4的集合对象
        val v = Vector(1, 2, 3, 4)
        // 添加集合后添加5(新建集合添加5)
        println(v :+ 5)
        // 集合前添加0(新建集合添加0)
        println(5 +: v)
        // 初始化构建高效数组缓存
        val array = ArrayBuffer(1, 2, 3, 4)
        // 添加元素5
        println(array += 5)
        // 删除元素1
        println(array -= 1)
        // 初始化Set集合对象
        val number = Set(1, 2, 3)
        // 添加4元素(新建set集合添加4)
        println(number + 4)
        // 添加4元素(新建set集合移除3)
        println(number - 3)
        // 使用++添加多个set元素(结果为无序的)
        println(number ++ Set(4, 5, 6))
      }
    }
    可以使用++一次添加多个元素,也可以使用--一次删除多个元素
    
    • 将函数映射到集合
      有时候可以对元素进行变换,map方法可以将某个函数应用到集合每个元素并进行相应的元素处理
        // 初始化创建List集合映射map
        val name = List("Bob", "Michael", "Marry")
        println(name.map(_.toUpperCase))
        val result = for (n <- name) yield n.toUpperCase
        println(result)
        // 拼接字符串
        def unclase(string: String) = Vector(string.toLowerCase(), string.toUpperCase())
        println(name.flatMap(unclase))
    
    • 与java集合相互转换
    import scala.collection.JavaConversions._
    需要手动导入,在项目中发现不手动导入这个,idea编辑器编译器会报错
    

    常见转换api

    隐式函数 java集合类型
    asjavaEnumeration Enumeration
    setAsJavaSet Set
    mapAsJavaMap Map
    bufferAsJavaList List
  • 相关阅读:
    科学-化学:化学百科
    科学-物理:物理学 (自然科学学科)百科
    科学-建筑学-建筑美学:建筑美学百科
    科学-建筑学:建筑学百科
    科学-哲学-美学:美学(中国哲学二级学科)
    哲学:哲学(世界观学说、社会形态之一)
    科学-语文:语文(语言和文学的简称)
    科学-分析:分析
    建模:数学建模
    科学-数学:数学
  • 原文地址:https://www.cnblogs.com/codegeekgao/p/9717542.html
Copyright © 2011-2022 走看看