我必须在List上使用foldByKey才能找到每个项目的最高价格。 我正在使用的数据是:
val itemPrice= List(("Soap",10),("Toaster",200),("Tshirt",400),("Tshirt",1000),("Suits",8000),("Suits",17000),("Soap",100))
当我尝试将列表拆分为单独的小项目时,出现错误:
error: value split is not a member of (String, Int)
我想将列表拆分为单个小列表,然后像
一样在其上应用foldbykeyval a = itemPrice.map(st =>st.split(",")).foldByKey(("dummy",0.0))((acc,element)=> if (acc._2>element._2) acc else element)
请帮助我找到解决方法。 代码审查和更正会很有帮助。
答案 0 :(得分:1)
您似乎想通过此example使它正常工作。
如您所见,您不需要split
。您有2个选择:
1)使用fold
-
itemPrice.fold(("dummy", 0.0))((acc, element) => {
(acc,element)=> if (acc._2>element._2) acc else element
})
2)使用foldByKey
,但在这种情况下,您需要具有以下元组:
List(("a", ("Soap",10)), ("b", ("Toaster", 200))) ..
然后:
`itemPrice.foldByKey(("dummy", 0.0))((acc, element) => {
(acc,element)=> if (acc._2>element._2) acc else element
})
同样,完全不需要使用split
。