2016-11-20 66 views
0

我目前的系统可以找到整数列表的最后一个值,如下面的第一个文件所示。然后将其显示为“当前”值。当我输入一个搜索并返回所有比我搜索的结果更高的结果时,我需要能够找到所有的“当前”值。列表保存为一个Map(String,List [Int])。搜索映射列表以返回更高值

SK1, 9, 7, 2, 0, 7, 3, 7, 9, 1, 2, 8, 1, 9, 6, 5, 3, 2, 2, 7, 2, 8, 5, 4, 5, 1, 6, 5, 2, 4, 1 
SK2, 0, 7, 6, 3, 3, 3, 1, 6, 9, 2, 9, 7, 8, 7, 3, 6, 3, 5, 5, 2, 9, 7, 3, 4, 6, 3, 4, 3, 4, 1 
SK4, 2, 9, 5, 7, 0, 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 
SK5, 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, 2, 7, 5, 9, 1, 9, 8, 4, 1, 7, 3, 7, 0, 8, 4, 5, 9, 2, 4, 4, 8, 7, 9, 2, 2, 7, 9, 1, 6, 9 
SK7, 6, 9, 5, 0, 0, 0, 0, 5, 8, 3, 8, 7, 1, 9, 6, 1, 5, 3, 4, 7, 9, 5, 5, 9, 1, 4, 4, 0, 2, 0 
SK8, 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, 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”,系统将返回;

图高于SK5 - 3

SK4 - 8

SK6 - 9

SK8 - 6

SK9 - 6

这是我的当前的代码以找到列表中的最后一个号码

//5 - Show Current Stock Level (W) 
    def handleFive(): Boolean = { 
    mnuShowSingleDataStock(currentStockLevel) 
    true 
    } 

// Returns a single result, not a list 
    def mnuShowSingleDataStock(stock: (String) => (String,Int)) = { 
    print("Stock > ") 
    val data = stock(readLine) 
    println(s"${data._1}: ${data._2}") 
    } 

    //Show higher than stocks 
    def higherThan(stock: String): List[(String, List[Int])] = { 
    mapdata.toList.sortWith(_._2.last > _._2.last).takeWhile(row => row._2.last > mapdata.get(stock).map(_.last).getOrElse(0)) 
    } 
根据最后的值,然后
+0

什么比'SK5'更高的数字意味着什么是' - 在'SK5 3' - 3' – pamu

+0

@pamu正如我在我的问题中所说的,值“ - 3”是SK5的“当前”值,这是列表中的最后一个元素。因此,通过高于数字,我指的是所有其他“当前”值,因此是列表的最后一个元素。 –

回答

1

排序需要而当前的股票价值是大于搜索股票价值

def higherThan(stock: String): List[(String, List[Int])] = { 
    mapdata.toList.sortWith(_._2.last > _._2.last).takeWhile(row => row._2.last > mapdata.get(stock).map(_.last).getOrElse(0)) 
} 
+0

你可以看看我的问题,我已经做了更改,但是我正在使用你的答案得到另一个错误。我目前一直在使用“String,List(Int)”,但是你使用list,string,list,int –

+0

@AndreQueen纠正了答案。请检查......在函数List [(String,List [Int])]的返回类型中缺少括号。' – pamu

+0

这很好,现在工作正常,即时通讯在选择搜索的号码时遇到困难,在我的回答中我有添加了错误。搜索功能本身似乎因新功能@pamu而出现错误 –