Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 通过比较字符串列表和映射筛选出元素_Scala - Fatal编程技术网

Scala 通过比较字符串列表和映射筛选出元素

Scala 通过比较字符串列表和映射筛选出元素,scala,Scala,我有两个函数,它们获取字符串列表和映射作为参数,并返回整数列表。如图所示: def f1(names: List[String], namemap: Map[String, List[Int]]): List[Int] = def f2(names: List[String], namemap: Map[String, List[Int]]): List[Int] = 为了使以下解释更容易理解,以下是一个示例: val nameslist = List("alex",

我有两个函数,它们获取字符串列表和映射作为参数,并返回整数列表。如图所示:

def f1(names: List[String], namemap: Map[String, List[Int]]): List[Int] = 

def f2(names: List[String], namemap: Map[String, List[Int]]): List[Int] =
为了使以下解释更容易理解,以下是一个示例:

val nameslist = List("alex", "toby")

val namesmap = Map("sarah" -> List(5), "toby" -> List(6), "alex" -> List(1, 6))

println(f1(nameslist, namesmap))
//should print: List(6,1)
println(f2(nameslist, namesmap))
//should print: List(6)
函数
f1
应该“比较”吗?列表
namelist
中的字符串与映射
namemap
中的字符串一起,并返回找到该字符串的
namemap
中的所有整数值

函数
f2
应该只返回两个字符串中的整数。

这应该会有所帮助

val nameslist = List("alex", "toby", "jo")
val namesmap =
  Map("sarah" -> List(5), "toby" -> List(6), "alex" -> List(1, 6))

nameslist.flatMap(namesmap.get)  //List[List[Int]]
         .flatten                //List[Int]
         .distinct               //duplicates removed
//res0: List[Int] = List(1, 6)

nameslist.flatMap(namesmap.get)       //List[List[Int]]
         .reduceOption(_ intersect _) //Option[List[Int]]
         .getOrElse(Nil)              //List[Int]
//res1: List[Int] = List(6)

你试图用什么方法来解决这个问题?你能给我们你的部分解决方案吗?谢谢:)这是我第一次处理这样的问题,我很迷茫从哪里开始!关于我应该研究什么,有什么建议吗?使用名字列表中的
map
foldLeft
和名字地图中的
getOrElse
可以很容易地解决这个问题;检查一下。此外,还需要检查Set类;)这很好!谢谢你,伙计!唯一的问题是,当我尝试
f2(List(“alex”,“jo”),namemap)
时,它仍然返回
List(1,6)
,即使
“jo”
namemap
中不存在!谢谢<代码>如果(nameslist.map(namesmap.get).forall(u.isDefined))<代码>其他列表()