一、类、list、map综合
package day05
import scala.io.{BufferedSource, Source}
object Test1{
def main(args: Array[String]): Unit = {
val source:List[Score1] = {
val sc: BufferedSource = Source.fromFile("F:\\score.txt")
val content: String = sc.mkString
sc.close()
content.split("\r\n|\n").map(line => {
val properties: Array[String] = line.split(", ")
Score1(properties(0), properties(1), properties(2), properties(3).toInt)
}).toList
}
val calculateScore: List[Int] => (Int,Int,Int,Double) = {
list => (list.max,list.min,list.sum,list.sum.toDouble/list.size)
}
val (max1, min1, sum1, avg1) = calculateScore(source.map(_.score))
println("第2题---------")
println(s"$max1")
println(s"$min1")
println(s"$sum1")
println(s"$avg1")
val (max2, min2, sum2, avg2) = calculateScore(source.filter(x => x.score>=60).map(_.score))
println("第3题---------")
println(s"$max2")
println(s"$min2")
println(s"$sum2")
println(s"$avg2")
val sorted: List[Score1] = source.sortWith(_.score > _.score)
println("第4题---------")
sorted.foreach(println)
val maxScore: Score1 = source.filter(_.score < 60).maxBy(_.score)
println("第5题---------")
println(s"${maxScore.name},${maxScore.subject},${maxScore.score}")
val (male,female) = source.partition(_.gender.equals("male"))
val maleCount: Int = male.map(_.name).toSet.size
val femaleCount: Int = female.map(_.name).toSet.size
println("第6题---------")
println(maleCount)
println(femaleCount)
val Score1(name1,_,_,score1) = male.maxBy(_.score)
val Score1(name2,_,_,score2) = female.maxBy(_.score)
println("第7题---------")
println(s"男生的最高: 姓名: $name1, 成绩: $score1")
println(s"女生的最高: 姓名: $name2, 成绩: $score2")
val top3: Map[String, List[Score1]] = source
.groupBy(_.subject)
.mapValues(_.sortWith(_.score > _.score))
.take(3)
println("第8题---------")
for ((subject,scores) <- top3){
println(s"subject:$subject,top3:$scores")
}
val count: Map[String, Int] = source.groupBy(_.name).mapValues(_.count(_.score < 60))
println("第9题---------")
for ((name,c) <- count){
println(s"name:$name,count=$c")
}
}
}
case class Score1(name:String,gender:String,subject:String,score:Int)
二、抽象类、继承、特质综合
package day05
object Test2 {
def main(args: Array[String]): Unit = {
val xiaoming = new Person
val yuantong = new Yuantong
val ems = new EMS
val shunfeng = new Shunfeng
xiaoming.sendPackageByAir(shunfeng)
xiaoming.sendPackageByAir(ems)
xiaoming.sendPakageByLand(yuantong)
xiaoming.sendPakageByLand(shunfeng)
}
}
abstract class Company {
var name: String = _
}
trait TransportOnAir {
def transportOnAir()
}
trait TransportOnLand {
def transportOnLand()
}
class Yuantong extends Company with TransportOnLand {
override def transportOnLand(): Unit = println("圆通快递发陆运")
}
class EMS extends Company with TransportOnAir {
override def transportOnAir(): Unit = println("EMS发空运")
}
class Shunfeng extends Company with TransportOnAir with TransportOnLand {
override def transportOnAir(): Unit = println("顺丰快递发空运")
override def transportOnLand(): Unit = println("顺丰快递发陆运")
}
class Person {
def sendPakageByLand(express: TransportOnLand): Unit = {
express.transportOnLand()
}
def sendPackageByAir(express: TransportOnAir): Unit = {
express.transportOnAir()
}
}