?
//tuple二元组
object _05Demo {
? ?def main(args: Array[String]): Unit = {
? ? ? ?/**
? ? ? ? * 元组 ? (,) 不可变的集合
? ? ? ? * 可通过小括号定义
? ? ? ? */
? ? ? ?val t = (1,3,4,5,6)
? ? ? ?val t2 = Tuple5(1,3,4,5,6)
? ? ? ?//通过下_的方式获取数据
? ? ? ?println(t2._3)
? ? ? ?//可以通过 -> 快捷生成一个元组
? ? ? ?println("000"-> "python")
? }
}
?
?
import scala.collection.mutable
?
//Set:无序唯一
object _06Demo {
? ?def main(args: Array[String]): Unit = {
? ? ? ?//Set默认是一个不可变的集合
? ? ? ?val set:Set[Int] = Set(1,34,5,6,7,8,8,8,1,2)
? ? ? ?println(set)
? ? ? ?//会去掉重复的 结果Set(5, 1, 6, 2, 34, 7, 8)
?
? ? ? ?val list:List[Int] = List(1,34,5,6,7,8,8,8,1,2)
? ? ? ?//对无序可重复的List去重
? ? ? ?println(list.distinct)
? ? ? ?println(list.toSet)
? ? ? ?//结果 ? List(1, 34, 5, 6, 7, 8, 2)
? ? ? ?//Set(5, 1, 6, 2, 34, 7, 8)
?
? ? ? ?println(list.map(i=>i+1)) //List(2, 35, 6, 7, 8, 9, 9, 9, 2, 3)
?
? ? ? ?//可变参数
? ? ? ?val hashSet:mutable.HashSet[String] = new mutable.HashSet[String]()
?
? ? ? ?hashSet.add("python")
? ? ? ?hashSet += "scala"
? ? ? ?println(hashSet)
? ? ? ?//Set(python, scala)
?
? ? ? ?hashSet.remove("python")
? ? ? ?hashSet -=("scala")
? ? ? ?println(hashSet)
? ? ? ?//Set()
? }
}
?
?
import scala.collection.mutable
?
//map集合 key-value形式
object _07Demo {
? ?def main(args: Array[String]): Unit = {
?
? ? ? ?//定义一个不可变的map集合
? ? ? ?val map:Map[String,String] = Map("1"->"lisi")
? ? ? ?//通过key获取value
? ? ? ?println(map("1")) //key 不存在会报错 ? //lisi
? ? ? ?map.getOrElse("01","hello") //该方法key不存在会返回默认值hello
?
? ? ? ?println(map.keys)
? ? ? ?println(map.values) ?//
?
? ? ? ?//遍历map nums是一个元组
? ? ? ?for (nums <- map) {
? ? ? ? ? ?val key: String = nums._1
? ? ? ? ? ?val value: String = nums._2
? ? ? ? ? ?println(key + "\t" + value)
? ? ? }
?
? ? ? ?//kv也是元组
? ? ? ?map.foreach(kv=>{
? ? ? ? ? ?val key:String = kv._1
? ? ? ? ? ?val value:String = kv._2
?
? ? ? ? ? ?println(key+"\t"+value)
?
? ? ? })
?
? ? ? ?/*可变的map*/
? ? ? ?val hashMap:mutable.HashMap[String,String] = new mutable.HashMap
? ? ? ?//增加元素
? ? ? ?hashMap.put("007","lisi")
? ? ? ?hashMap += "009"->"李四"
? ? ? ?println(hashMap)
?
? ? ? ?//获取元素
? ? ? ?hashMap.getOrElse("007","lisi")
? ? ? ?hashMap("009")
? ? ? ?println(hashMap)
? }
}
//lisi
//Set(1)
//MapLike(lisi)
//1 lisi
//1 lisi
//Map(007 -> lisi, 009 -> 李四)
//Map(007 -> lisi, 009 -> 李四)
?
import scala.io.Source
?
//单词
object _08Demo {
? ?def main(args: Array[String]): Unit = {
? ? ? ?//1.读取数据
? ? ? ?val lines: List[String] = Source.fromFile("D://input//words.txt").getLines().toList
?
? ? ? ?//2.flatmap函数展开单词
? ? ? ?val words:List[String] = lines.flatMap(line => line.split(" "))
?
? ? ? ?//3.按照单词分组
? ? ? ?//groupBY指定分组的列
? ? ? ?val kv: List[(String, List[String])] = words.groupBy(word => word).toList
?
?
? ? ? ?//统计每个单词的个数
? ? ? ?val sum:List[(String,Int)] = kv.map(kv => {
? ? ? ? ? ?val key:String = kv._1
? ? ? ? ? ?val value:List[String] = kv._2
? ? ? ? ? ?//统计数量
? ? ? ? ? ?val size:Int = value.size
? ? ? ? ? (key,size)
? ? ? })
? ? ? ?sum.foreach(println)
? ? ? ?println("="*100)
?
? ? ? ?//排序方法 soreBy 默认的是升序(s=> -s._2)
? ? ? ?//使用降序方法
? ? ? ?val sort:List[(String,Int)] = sum.sortBy(s=> -s._2)
? ? ? ?sort.foreach(println)
? ? ? ?println("+"*100)
?
? ? ? ?//进行链式调用 在一行中实现
? ? ? ?Source
? ? ? ? .fromFile("D://input//words.txt")//读取文件
? ? ? ? .getLines()//获取所有行
? ? ? ? .toList//转换成list
? ? ? ? .flatMap(line=>line.split(","))//将数据展开
? ? ? ? .groupBy(word=>word)//按单词分组
? ? ? ? .toList
? ? ? ? .map(kv=>(kv._1,kv._1.size))//统计每个单词的数量
? ? ? ? .foreach(println)
? }
}
//(world,1)
//(java,1)
//(spark,2)
//(scala,1)
//(hello,5)
//====================================================================================================
//(hello,5)
//(spark,2)
//(world,1)
//(java,1)
//(scala,1)
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//(hello java,10)
//(hello spark,11)
//(hello scala,11)
//(hello world,11)
|