scala list set

时间:2021-07-14
本文章向大家介绍scala list set,主要包括scala list set使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

集合

package scala

object Demo17List {
  def main(args: Array[String]): Unit = {

    /**
      * list ,  相当于java中的ArrayList
      * scala 默认的list  是不可变的
      *
      */

    val list = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 1)


    /**
      *
      * list中常用的方法
      * 下面所有的方法都不会修改源集合
      */

    //通过下表取数
    println(list(1))

    println(list.mkString(",")) //拼接成字符串
    println(list.head) //取第一个元素
    println(list.last) //取最后一个元素
    println(list.take(3)) //取前几个元素
    println(list.size)
    println(list.length)
    println(list.distinct) //去除重复元素
    println(list.reverse) //反转集合,返回一个新的集合
    println(list.tail) //返回不包含第一个元素所有的元素
    println(list.min) //取最小值
    println(list.max) //取最大值
    println(list.sum) //求和

    /**
      *
      * 高级方法
      */
    /**
      * map 函数
      *将集合中的元素一个一个传递给后面的函数,最终返回一个新的集合
      * 数据行数不变,原来多少行,处理完还是多少行
      */
    val list1: List[Int] = list.map((i:Int  ) => i * 2 )
    println(list1)


    //取出所有的奇数
    /**
      * filter 函数  对集合中的元素进行过滤
      * 后面的函数返回true ,保留数据
      * 后面的函数返回flase,过滤数据
      *
      * 集合的数据量会减少
      */

    val list2: List[Int] = list.filter((i:Int )=> i % 2==1)
    println(list2)

    /**
      *
      * sort 函数
      * sortBy:通过某一个字段进行排序 默认升序  想降序加负号
      *sortWith: 传入一个比较规则进行排序
      *
      */
    val sortList: List[Int] = list.sortBy((i:Int ) => i)
    println(sortList)

    val list5: List[Int] = list.sortWith((i:Int ,j:Int )=> i < j)
    println(list5)


    val strs = List("java,spark,hadoop,java", "hive,scala,hbase", "hive,scala,hbase", "flume,sqoop")

    /**
      * flatMap 函数
      *将集合中的元素按照一个分割方式分割成多行
      *一行转换成多行
      *
      * 需要一个返回值为数组或集合的函数
      */
    val words: List[String] = strs.flatMap((line:String )=> line.split(",")).toList
    println(words)

    /**
      * 结果数据不变--- map
      * 结果数据变少--- filter
      * 结果数据变多 -- flatMap
      *
      */

    /**
      * groupBy  函数
      *通过某一个列进行分组,将同一个列分到同一个组内
      */

    val map: Map[String, List[String]] = words.groupBy((word:String )=> word)
    for (elem <- map) {
      println(elem)
    }

    /**
      *遍历
      *
      * foreach: 函数 遍历集合
      * 将集合中的元素一个一个传给后面的函数,没有返回值
      *
      */

    for (elem <- list) {
      println(elem)
    }

    list.foreach((i:Int )=> println(i))

    //简写
    list.foreach(i => println(i))
    println("=" * 100)
    //多态
    list.foreach(println)

  }
}

 set 集合

package scala

object Demo19Set {
  def main(args: Array[String]): Unit = {
    /**
      * set集合:唯一 无序
      * 默认不可变的
      *
      */
    val set = Set(1,2,3,4,5,6,7,8,1)   //底层是哈希表

    println(set)
    println(set.mkString(","))

    //和顺序相关的方法 set没有

    val s1 = Set(1,2,3,4,5)
    val s2 = Set(4,5,6,7,8)

    //& 是一个方法
    println(s1 & s2) //计算集合的交集
    println(s1 | s2) // 计算两个集合的并集
    println(s1 &~ s2) //差集

  }
}

原文地址:https://www.cnblogs.com/lipinbigdata/p/15009980.html