天天看點

Scala集合練習

object Homework_Scala_03 {
  def main(args: Array[String]): Unit = {
    //1.建立一個List(3,2,4,6,7,5,1,0,9,8)
  val list: List[Int] = List(3,2,4,6,7,5,1,0,9,8)
    println("建立的集合為:"+list)
    //2.将list中每個元素乘以2後生成一個新的集合
    val newlist1: List[Int] = list.map(_*2)
    println("list中每個元素乘以2後生成一個新的集合為:"+newlist1)
    //3.将list1中的偶數取出來生成一個新的集合
    val newlist2 = list.filter(_%2==0)
    println("list中的偶數取出來生成一個新的集合為:"+newlist2)
    //4.将list1排序後生成一個新的集合
    val sorted_list: List[Int] = list.sorted
    println("排序後"+sorted_list)
 //5.反轉排序順序
    val reverse_sortlist: List[Int] = sorted_list.reverse
    println("反轉排序後的集合"+reverse_sortlist)
    //6.将list1中的元素4個一組方法(grouped),看一下是什麼資料類型
    //将上面方法得到的分組類型轉換成List
    val grouped_list: Iterator[List[Int]] = list.grouped(4)
    val list1: List[List[Int]] = grouped_list.toList
    println(list1)
    val list_to_map: List[Int] = list1.map(_.size)
   println(list_to_map)
    //7.将多個list壓扁成一個List
    val list1_flatten: List[Int] = list1.flatten
    println(list1_flatten)
    val strings_list: List[String] = List("hello tom hello jerry", "hello suke hello", " hello tom")
    //8.先按空格切分,再壓平
    val strings_flapmap: List[String] = strings_list.flatMap(_.split(" "))
    println(strings_flapmap)
    //9.wordcount
    strings_flapmap.map((_,1))
    val tuple: List[(String, Int)] = strings_flapmap.map((_,1))
    println(tuple)
    //根據單詞進行分組
    //将相同的單詞進行分組
    val stringToTuples: Map[String, List[(String, Int)]] = tuple.groupBy(_._1)
    println(stringToTuples)
    //單詞統計
    val mapvalue_word: Map[String, Any] = stringToTuples.mapValues(_.size)
     println(mapvalue_word)
    //求出Top1,資料已經存在Map集合中
     val to_list: List[(String, Any)] = mapvalue_word.toList
     println(to_list)
    //這個排序是根據傳入的指定值來進行排序的,預設是升序,無法直接降序,Spark中有一個和這個方法一樣的sortBy,是
    //可以自由升序降序
}
}