//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)
})
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)