Scala:长度为k的所有子字符串

Scala:长度为k的所有子字符串,scala,apache-spark,functional-programming,mapreduce,Scala,Apache Spark,Functional Programming,Mapreduce,我是scala的新手,我很难理解如何使用map()或foreach()等函数对字符串执行操作 特别是,我试图从一个字符串(称为k-shingles)中提取长度为k的所有唯一连续子字符串。我的函数kshingles(s:String,k:Int)在字符串“abcdab”上调用时应返回Set(“ab”、“bc”、“cd”、“da”) 我如何在scala中实现这一点?一个额外的好处是它可以并行化(例如使用Spark)是您正在寻找的方法。从滑动文档: 通过在固定大小的块上传递“滑动窗口”对元素进行分组(

我是scala的新手,我很难理解如何使用
map()
foreach()
等函数对字符串执行操作

特别是,我试图从一个字符串(称为k-shingles)中提取长度为k的所有唯一连续子字符串。我的函数
kshingles(s:String,k:Int)
在字符串
“abcdab”
上调用时应返回
Set(“ab”、“bc”、“cd”、“da”)

我如何在scala中实现这一点?一个额外的好处是它可以并行化(例如使用Spark)

是您正在寻找的方法。从
滑动
文档:

通过在固定大小的块上传递“滑动窗口”对元素进行分组(与在
grouped
中对元素进行分区相反),“滑动窗口”步骤设置为一

例如
“abcdab”。滑动(2)。toSet
将提供您要查找的结果

在Scala 2.13
String中,不推荐使用滑动
。Scala 2.13的正确解决方案是:

"abcdab".toSeq.sliding(2).map(_.unwrap).toSet
  • 对于Scala 2.13
  • 对于Scala 2.12