美文网首页
scala集合学习笔记

scala集合学习笔记

作者: zhangxu0636 | 来源:发表于2016-07-12 15:37 被阅读71次

    列表 List

    类似于数组

    • 创建列表
    val list = List(2, 3, 4, 5)
    //创建空的列表
    val list1 = Nil 
    val list2 = List()
    val list3 = 1 :: 2 :: Nil
    
    • 获取元素,下标也从0开始
    list(0)
    
    • 统计特定的元素的个数
    //统计List中元素大于2的个数
    list.count(x => x > 2)
    

    统计其中字符串的长度大于2的元素的个数

    val tempList = "1" :: "hello" :: "test" :: Nil
    tempList.count(s=>s.length > 2)
    
    • 获得列表的长度
    list.length
    
    • 生成用指定符号隔开的字符串
    list.mkString(":")
    list.mkString(",")
    
    • 反序生成列表
    list.reverse
    
    • 排序
      sortWith
    val sortList = List(2,4,4,5,65)
    //降序
    sortList.sortWith((x: Int, y: Int) => x > y)
    //升序
    sortList.sortWith((x: Int, y: Int) => x < y)
    
    • 打印每一个元素
    list.foreach((x)=>println(x))
    //或者
    list.foreach(println _)
    

    集合

    val set = Set(1,2,1)
    

    元组

    val hostPort = ("localhost",80)
    hostPort._1
    hostPort._2
    

    Map

    val map = Map("1"->"2")
    val map = Map(("1"->"2"))
    map.get("1")
    //如果取不到值,在java中肯定会报错,但是在这我们可以规避,给定一个default值
    map.getOrElse("2",3)
    

    函数组合子

    • Map

    对列表中的每个元素应用一个函数,返回应用后的元素所组成的列表。

    list.map((i: Int) => i + 2)
    //传入一个函数
    def add(i: Int): Int = i + 2
    list.map(add)
    
    • filter

    移除任何对传入函数计算结果为false的元素。返回一个布尔值的函数通常被称为谓词函数[或判定函数]。

    list.filter((i: Int) => i % 2 == 0)
    
    • zip拉练操作

    将两个列表的内容聚合到一个对偶列表中。

    List(1,2,3).zip(List("a","b","c"))
    
    • partition

    将使用给定的谓词函数分割列表。

    val testList = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
    testList.partition(_ % 2 == 0)
    
    • find
      find返回集合中第一个匹配谓词函数的元素。
    testList.find((x: Int) => x > 3)
    
    • foldLeft

    将上次的计算结果重新赋值,然后与下一个元素进行累计。

    testList.foldLeft(0) {
      (m: Int, n: Int) => m + n
    }
    

    我们可以观察一下这个过程。

    testList.foldLeft(0) {
      (m: Int, n: Int) => println("m: " + m + " n: " + n); m + n
    }
    
    • flatten

    将嵌套结构扁平化为一个层次的集合。

    List(List(1,2),List(3,4)).flatten
    
    • flatMap

    一个处理嵌套列表的函数,然后将结果串连起来。

    val nestedList = List(List(1,2),List(3,4))
    nestedList.flatMap(x=>x.map(_ * 2))
    

    相关文章

      网友评论

          本文标题:scala集合学习笔记

          本文链接:https://www.haomeiwen.com/subject/awzjjttx.html