import java.time.LocalDate
object Main extends App{
case class Score(
name: String,
english: Int,
math: Int,
science: Int,
date: LocalDate
)
val scoreOfAlice = Score(name = "Alice", english = 77, math = 74, science = 26, date = LocalDate.of(2020, 1, 30))
val scoreOfBob = Score(name = "Bob", english = 100, math = 74, science = 14, date = LocalDate.of(2020, 1, 26))
val scoreOfCharlie = Score(name = "Charlie", english = 100, math = 74, science = 99, date = LocalDate.of(2020, 1, 26))
val scoreOfDave = Score(name = "Dave", english = 50, math = 81, science = 88, date = LocalDate.of(2020, 1, 30))
val scores: Seq[Score] = Seq(scoreOfAlice, scoreOfBob, scoreOfCharlie, scoreOfDave)
println(getDateNameScoreMap(scores)(LocalDate.of(2020, 1, 30))("Alice"))
def getDateNameScoreMap(scoreSeq: Seq[Score]): Map[LocalDate, Map[String, Int]] = scores.groupMap(score => score.date)(score=>Map(score.name -> (score.english score.math score.science)))
}
我想實作一個函式,將考試日期映射到學生姓名和該日期三個科目總分的映射,如果同一學生在同一日期有多個分數,則該函式回傳一個總分最高的。但是,這里是功能
找到:scala.collection.immutable.Map[java.time.LocalDate,Seq[scala.collection.immutable.Map[String,Int]]]]
“必需:地圖[java.time.LocalDate,Map[String,Int]]”。
我該如何解決這個問題?
uj5u.com熱心網友回復:
錯誤意味著它所說的:變數的型別和分配給變數的值的型別不匹配。它甚至告訴你這兩種型別是什么!
實際的問題是它groupMap
沒有回傳您認為應該的型別。結果中的值是 sMap
中的一個Seq
,Map
而不是Map
所有結果中的一個。
您可以通過使用s連接將sgroupMapReduce
轉換List
為單個:Map
Map
scores
.groupMapReduce(_.date)
(score=>Map(score.name -> (score.english score.math score.science)))
(_ _)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/524171.html
標籤:斯卡拉