首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Scala中获取子数组的正确方法是什么?

在Scala中获取子数组的正确方法是什么?
EN

Stack Overflow用户
提问于 2012-05-31 17:32:54
回答 2查看 69.8K关注 0票数 105

我正在尝试在scala中获得一个子数组,但我对正确的方法感到有点困惑。我最想要的就是你可以用python做的事情:

代码语言:javascript
复制
x = [3, 2, 1]
x[0:2]

但我相当确定你不能这样做。

最明显的方法是使用Java Arrays util库。

代码语言:javascript
复制
import java.util.Arrays
val start = Array(1, 2, 3)
Arrays.copyOfRange(start, 0, 2)

但是在Scala中使用Java库总是让我觉得有点脏。我发现的最“标量”的方法是

代码语言:javascript
复制
def main(args: List[String]) {
    val start = Array(1, 2, 3)
    arrayCopy(start, 0, 2)
}
def arrayCopy[A](arr: Array[A], start: Int, end: Int)(implicit manifest: Manifest[A]): Array[A] = {
    val ret = new Array(end - start)
    Array.copy(arr, start, ret, 0, end - start)
    ret
}

但是有没有更好的方法呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-31 17:36:05

您可以调用slice方法:

代码语言:javascript
复制
scala> Array("foo", "hoo", "goo", "ioo", "joo").slice(1, 4)
res6: Array[java.lang.String] = Array(hoo, goo, ioo)

它的工作原理类似于python。

票数 140
EN

Stack Overflow用户

发布于 2020-06-16 22:10:59

从2D Scala数组(Original_array)中提取特定列的示例:

代码语言:javascript
复制
import scala.collection.mutable.ArrayBuffer

val sub_array = ArrayBuffer[Array[String]]()
val columns_subset: Seq[String] = Seq("ColumnA", "ColumnB", "ColumnC")
val columns_original = original_array(0)

for (column_now <- columns_subset) {
      sub_array += original_array.map{_(columns_original.indexOf(column_now))}
    }
sub_array
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10830944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档