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]。
另外,这不能处理书籍序列为空的情况。
完成此操作的最简洁方法是什么。
您只需要
map
,而不是flatMap
:
subjects.map(s => books.find(b => b.contains(s)).getOrElse(s))