目前我可以搜索一个值,比如SK5
,它会返回高于SK5
的所有值。但是它的格式如下所示返回;
列表((SK6,List(2,7,5,9,1,9,8,4,1,7,3,7,8,4,5,5,2,9, 4,4,8,7,9,2,2,7,9,1,6,9)),(SK4,List(2,9,5,7,8,8,6, 6,7,9,0,1,3,1,6,0,0,1,3,8,5,4,0,9,7,1,4,5,2,8)), (SK8,List(2,8,8,3,1,1,0,8,5,9,0,3,1,6,8,7,9,6,7,7, 0,9,5,2,5,0,2,1,8,6)),(SK9,List(7,1,8,8,4,4,2,2,7, 4,0,6,9,5,5,4,9,1,8,6,3,4,8,2,7,9,7,2,6,6)), (SK5,List(2,6,8,0,3,5,5,2,5,9,4,5,3,5,7,8,8,2,5,9, 3,8,6,7,8,7,4,1,2,3)))
我想要的是SK6 - 9,SK4 - 8等等
全部捆绑在一起,我如何将其拆分并仅显示列表中的最后一个数字?我以为我已经过滤了这个,但显然不是。
以下是我的代码。 Mapdata
已保存为Map(String, List[Int])
//functionality to find the last tail element, the "Current" stock price
def findLast(list:List[Int]) = list.last
//8 - Show Stocks Higher Than (W) THIS ONE THIS ONE THIS ONE
def handleEight(): Boolean = {
mnuShowPointsForStockHigher(higherThan2)
true
}
//Returns a list value
def mnuShowPointsForStockHigher(stock: (String) => List[(String, List[Int])]) = {
print("Enter Stock > ")
val data = stock(readLine)
println(s"${data}")
//println(s"${data._1}: ${data._2.last}")
}
def higherThan2(stock: String): List[(String, List[Int])] = {
mapdata.toList.sortWith(_._2.last > _._2.last).takeWhile(row => row._2.last > mapdata.get(stock).map(findLast(_)).getOrElse(0))
}
答案 0 :(得分:0)
如果您尝试获取每个列表中的最后一个值,则最佳选项将是map + last。对不起,不需要使用展平。我的坏..应该是行:list.map(x => x.last)