2016-12-07 56 views
0

我目前是一名正在学习的学生,刚刚完成了一项工作,但是我误解了这个问题。我想为每个数据获取当前“最新”价格,但是我创建了它,以便我单独搜索每个数据。 例如,我会在菜单选项中按1并输入“SK1”,并显示平均结果,我需要修改,所以当我在菜单选项中按1时,我不输入任何内容并显示所有平均值。通过地图列表搜索并返回多个结果

这是我当前的代码来搜索数据并返回结果。我需要返回所有的数据,不仅仅是搜索的数据。

p.s.属于MapData是“地图(字符串列表[INT])”

//5 - Show Current data Level 
    def handleFive(): Boolean = { 
    mnuShowSingleData(currentDataLevel) 
    true 
    } 

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

    //Show last element in the list, most current 
    def currentDataLevel (data: String): (String, Int) = { 
    (data, mapdata.get (data).map(findLast(_)).getOrElse(0)) 
    } 

我明白了什么即时通讯做和如何寻找个人成绩,只是不知道如何修改它通过搜索和返回的所有数据最后的元素。

更准确的措词;

拿到一张地图[字符串,列表[INT]],我怎么制作地图[字符串,INT] 其中在输入每个键,所得到的值将在相应的最后 项目值,或者如果值是空列表,则为0? 例如,对于此输入:

+1

你的问题是难以理解的。尝试给出具体的输入和预期输出示例,并删除所有不相关的信息(“我将在菜单选项中按1 ...” - 这是如何相关的?什么菜单?什么是“平均值”?) –

+0

?这就是它所做的,这就是我想要做的事情?目前我可以搜索1个列表值,并返回1个值最后一个元素。我需要能够返回所有最后的元素没有搜索,@TzachZohar –

+0

哦,所以你想要“所有_last_元素”?再次阅读您的文章,看到即使_that_不是写在那里,90%的内容是完全不必要的。请帮助人们提供所有必要的信息,并提供必要的信息。 –

回答

0

首先,我要改写这个问题到了什么,我认为它会询问:

给定一个Map[String, List[Int]],我怎么产生Map[String, Int]其中在每个关键输入,结果值将是相应值中的最后一项,或者如果该值是空列表,则为0?例如,对于此输入:

val m = Map("a" -> List(1,2,3), "b" -> List(4,5), "c" -> List[Int]()) 

我希望下面的输出:Map("a" -> 3, "b" -> 5, "c" -> 0)

如果是这样的问题 - 这里的答案:

m.mapValues(_.lastOption.getOrElse(0)) 

编辑:纳入OP的代码:

def mnuShowSingleData() = { 
    val current = currentDataLevel() 
    // just a suggestion, you can obviously play around with the way this is printed: 
    print(s"data > ${current.mkString(", ")}") 
} 

def currentDataLevel(): Map[String, Int] = { 
    mapdata.mapValues(_.lastOption.getOrElse(0)) 
} 

// prints: data > a -> 3, b -> 5, c -> 0 
+0

无论如何,您可以将其纳入我的问题代码中吗?我知道如何找到最后的值,我努力修改我的代码以显示多个结果而不是一个。你所显示的是我所需要的,但我不知道如何实现它。 @TzachZohar –

+0

完成后,希望它有帮助 –

+0

空列表不支持'min'和'max'。如果你能保证没有任何列表是空的,你可以简单地执行'mapdata.mapValues(_。min)'。否则,您可以使用'reduceOption'自己执行缩减,例如:'mapdata.mapValues(_。reduceOption(Math.min).getOrElse(0))' –

相关问题