如何通过给定的两个Scala序列生成目标序列?
Scala序列元素全组合拼接实现方案
要实现将seq1中每个元素与seq2所有元素拼接,并按seq1元素顺序依次生成目标序列,有两种常用的简洁实现方式:
方法一:使用flatMap + map组合
通过flatMap遍历seq1的每个元素,再对seq2的每个元素执行拼接操作,最后将所有子序列扁平化为一个完整序列:
val seq1 = Seq("A","B","C") val seq2 = Seq(1,2,3) val result = seq1.flatMap(char => seq2.map(num => s"$char$num"))
flatMap的作用是将每个字符对应的拼接结果序列(比如Seq("A1","A2","A3"))合并成一个大序列,完全符合目标顺序要求。
方法二:使用for推导式
Scala的for推导式是flatMap和map的语法糖,写法更直观易读:
val seq1 = Seq("A","B","C") val seq2 = Seq(1,2,3) val result = for { char <- seq1 num <- seq2 } yield s"$char$num"
先遍历seq1的每个字符,再遍历seq2的每个数字,每次拼接后将结果收集到最终序列中,输出结果与方法一完全一致。
两种方法执行后,result都会得到目标序列:Seq("A1","A2","A3","B1", "B2", "B3", "C1", "C2", "C3")
内容的提问来源于stack exchange,提问作者Lokesh G
相关产品推荐
相关产品推荐

