序列的条件交集

问题描述 投票:0回答:1
val subjects = Seq("Physics","Maths","English","Chemistry")
val books = Seq("Elementary Physics", " Expert Maths")

“书籍”序列也可能为空。

这个想法是迭代主题 - 并返回每个主题的书籍顺序。
每个主题最多可能有一本书 - 并且书名肯定包含主题作为子字符串。

如果主题没有书 - 主题名称将按原样返回。

因此在上述情况下 - 输出序列将是:
Seq(“基础物理”、“专家数学”、“英语”、“化学”)

subjects.flatMap(s => books.find( b => b.contains(s).getOrElse(s)))

上面给出了一个编译问题 - 返回 Seq[Char] 而不是 Seq[String]。
另外,这不能处理书籍序列为空的情况。

完成此操作的最简洁方法是什么。

scala
1个回答
0
投票

您只需要

map
,而不是
flatMap

subjects.map(s => books.find(b => b.contains(s)).getOrElse(s))
© www.soinside.com 2019 - 2024. All rights reserved.