2016-11-20 70 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而出現錯誤 –