1. 平均温度案例:
1.1 需求:求出各个地区的平均温度
1.2 代码实现:
package com.zxx.fuxiday05 object AvgTemp { def main(args: Array[String]): Unit = { //数据 val d1 = Array(("beijing", 28.1), ("shanghai", 28.7), ("guangzhou", 32.0), ("shenzhen", 33.1)) val d2 = Array(("beijing", 27.3), ("shanghai", 30.1), ("guangzhou", 33.3)) val d3 = Array(("beijing", 28.2), ("shanghai", 29.1), ("guangzhou", 32.0), ("shenzhen", 32.1)) //需求,求各个地区的平均温度 //先将这三个集合合并为一个集合 val array: Array[(String, Double)] = d1.union(d2).union(d3) //将集合中的元素按照K 进行分组 val map1: Map[String, Array[(String, Double)]] = array.groupBy(_._1) //遍历集合,求同一个地区的平均温度 var res=0 val stringToList: Map[String, List[(String, Double)]] = map1.map(e => { (e._1, e._2.toList) }) stringToList.mapValues(e=>{ val length = e.length val d = e.reduce((a1, a2) =>(a1._1, a1._2 + a2._2)) d._2/length }).foreach(println) /**中途过程展示 * (shenzhen,List((shenzhen,33.1), (shenzhen,32.1))) * (shanghai,List((shanghai,28.7), (shanghai,30.1), (shanghai,29.1))) * (guangzhou,List((guangzhou,32.0), (guangzhou,33.3), (guangzhou,32.0))) * (beijing,List((beijing,28.1), (beijing,27.3), (beijing,28.2))) */ //结果展示 /** * (shenzhen,32.6) * (shanghai,29.3) * (guangzhou,32.43333333333333) * (beijing,27.86666666666667) */ } }
2. 用户订单表和用户表案例:
2.1 需求:将商品表和用户表通过用户id来将这两张表关联起来
2.2 数据准备:
用户订单表:
order001,u006
order002,u006
order003,u005
order004,u006
order005,u003
order006,u002
用户订单表:
u001,senge,18,male,angelababy
u002,,58,male,ruhua
u003,shuaishuai,16,female,chunge
u004,laoyang,28,female,zengge
u005,nana,24,female,huangbo
u006,dingding,19,male,taojiji
2.3 代码实现
package com.zxx.fuxiday05 import java.io.File import scala.io.Source object JoinDemo { def main(args: Array[String]): Unit = { //先读取订单文件 val orderList = Source.fromFile(new File("E:\\java_project\\lineproject\\Data\\order.txt")).getLines().map(_.split(",").toList) //读取用户订单文件 val userList = Source.fromFile(new File("E:\\java_project\\lineproject\\Data\\user.txt")).getLines().map(_.split(",").toList) //先将商品订单中的两个元素互换位置 var res = orderList.map(e => { List(e(1), e(0)) }) //将商品订单和用户订单合并为一个集合 val finList = res ++ userList //List((u002,order006)) // List(u001, senge, 18, male, angelababy) //List(u002, , 58, male, ruhua) val map: Map[String, List[List[String]]] = finList.toList.groupBy(e => e(0)) val res2 = map.map(e => { val flatten = e._2.flatten flatten }) res2.toList.map(e => { e.distinct }).foreach(println) //结果展示 /* List(u002, order006, , 58, male, ruhua) List(u003, order005, shuaishuai, 16, female, chunge) List(u004, laoyang, 28, female, zengge) List(u001, senge, 18, male, angelababy) List(u005, order003, nana, 24, female, huangbo) List(u006, order001, order002, order004, dingding, 19, male, taojiji)*/ //商品订单 /*List(order001, u006) List(order002, u006) List(order003, u005) List(order004, u006) List(order005, u003) List(order006, u002)*/ //List(u002, , 58, male, ruhua) // 用户订单 /* List(u001, senge, 18, male, angelababy) List(u002, , 58, male, ruhua) List(u003, shuaishuai, 16, female, chunge) List(u004, laoyang, 28, female, zengge) List(u005, nana, 24, female, huangbo) List(u006, dingding, 19, male, taojiji)*/ // 最后的集合展示 //List((u006,order001)) //List((u006,order002)) //List((u005,order003)) //List((u006,order004)) //List((u003,order005)) //List((u002,order006)) //List(u001, senge, 18, male, angelababy) //List(u002, , 58, male, ruhua) //List(u003, shuaishuai, 16, female, chunge) //List(u004, laoyang, 28, female, zengge) //List(u005, nana, 24, female, huangbo) } }