我对scala完全陌生,我很难理解如何使用像这样的函数 map()
或者 foreach()
对字符串执行操作。
特别是,我试图从一个字符串(称为k-shingles)中提取所有长度为k的唯一连续子字符串。我的职能 kshingles(s: String, k: Int)
在字符串上调用 "dab"
你应该回来 Set("ab", "bc", "cd", "da")
.
如何在scala中实现这一点?一个额外的好处是它可以并行化(例如使用spark)
我对scala完全陌生,我很难理解如何使用像这样的函数 map()
或者 foreach()
对字符串执行操作。
特别是,我试图从一个字符串(称为k-shingles)中提取所有长度为k的唯一连续子字符串。我的职能 kshingles(s: String, k: Int)
在字符串上调用 "dab"
你应该回来 Set("ab", "bc", "cd", "da")
.
如何在scala中实现这一点?一个额外的好处是它可以并行化(例如使用spark)
1条答案
按热度按时间3pmvbmvn1#
sliding
是你要找的方法。从sliding
文档:通过在固定大小的块上传递一个“滑动窗口”来对元素进行分组(而不是像中那样对它们进行分区)
grouped
)将“滑动窗口”步骤设置为1。例如
"dab".sliding(2).toSet
将提供您正在寻找的结果。在scala 2.13中
String.sliding
已弃用。scala 2.13的正确解决方案是:scala 2.13的scastie
scala 2.12的scastie