Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.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,下面是filterSetofSource,它将字符串的前两个单词作为映射的键,最后一个单词作为Item case类中state字段的值。我们必须遍历filterSetofSource,如果前两个单词匹配映射的键,最后一个单词匹配state,则只保留这些键和项的匹配值 val filterSetofSource = Set("apple of kashmir", "apple of jammu") val map = Map("apple of" -> Set(Item(

下面是
filterSetofSource
,它将字符串的前两个单词作为映射的键,最后一个单词作为Item case类中
state
字段的值。我们必须遍历
filterSetofSource
,如果前两个单词匹配映射的键,最后一个单词匹配state,则只保留这些键和项的匹配值

val filterSetofSource = Set("apple of kashmir", "apple of jammu")

val map = Map("apple of" -> Set(Item(
                               location = Some(Map("state" -> "kashmir"))
                            ),Item(
                               location = Some(Map("state" -> "himachal"))
                            )
             )
在上述场景中,输出应如下所示:

Map("apple of" -> Set(Item(
                           location = Some(Map("state" -> "kashmir"))
                          )
             )
   )

作为Scala新手,我无法实现逻辑,因此寻求帮助。

这会产生您想要的结果

val locals = filterSetofSource.map(_.split("\\s+").lift(2))
                              .filter(_.nonEmpty)

val result = map.map { case (k, v) =>
  k -> v.filter(itm => locals(itm.location.map(_("state"))))
}
这就产生了两种可能是危险的假设:

  • 每个
    filterSetofSource
    条目的第三个字(如果存在)始终是位置部分
  • 项目.位置
    地图
    始终有一个
    状态

  • 我不得不说,这是我很长时间以来遇到的最荒谬的数据结构大杂烩集合。

    @jwvh这是一个封装Location的case类。如果您包含必要的代码来复制它,那就太好了