知识点
相关文章
更多最近更新
更多scala数组操作
2019-03-23 21:27|来源: 网路
定长数组
最简单的数组创建如下,记住方括号在Scala中用做泛型,相当于<>在Java中作用。
定义10个Integer的数组,初始值为零。
定义数组的时候,可以省略new的初始化,并且利用类型推断,无需指明类型
val s = Array("Hello", "World")
获取数组中的元素使用(数组下标)。
s(0) = "Goodbye"
s不是val吗?为什么可以改变呢?s这里存的是一个数组的reference,reference不能变,但是其内容是可以改变的。另外说一句,遗憾的是,从C时代开始,Index从0开始这一违反人类正常思维的“习惯”一直沿用。
combine: Array[Int] = Array(1, 4, 2, 3, 1, 2)
变长数组
Scala中的ArrayBuffer和Java中的ArrayList类似,长度可以改变。
在使用ArrayBuffer的时候,要引入它。scala中引入包的方式为
import scala.collection.mutable.ArrayBuffer
val b = ArrayBuffer[Int]();
b += 1 //加元素
b += (1, 2, 3, 5) //加数组
b ++= Array(6,7)//加集合
println(b)
数组遍历
可以使用Index
或者
要强调的是,对一个数组(或者其他集合)进行遍历以一种命令式的编程(imperative programming)。在Scala中,我们往往避免使用,而是使用函数式的方法。强调“做什么”而不是怎么做。以后还会遇到很多例子,你会逐步感受到它们的区别。
b.foreach(x => println(x))
通用算法
Scala提供了很多内建通用算法,作用于数组,以及以后会谈到的其他数据类型如集合。比如sum,count,max,mKString等等。mKString是一个很使用的方法。参见下面的例子。
整理于网络
相关问答
更多-
scala 中有什么操作是可以拿到数组中重复的元素[2021-11-28]
如何统计数组中每个元素重复次数 PHP 中的 array_count_values() 函数可以实现 array_count_values() 函数用于统计数组中所有值出现的次数。 本函数返回一个数组,其元素的键名是原数组的值,键值是该值在原数组中出现的次数。 -
在Scala中进行数组初始化(Array initializing in Scala)[2022-03-14]
scala> val arr = Array("Hello","World") arr: Array[java.lang.String] = Array(Hello, World) scala> val arr = Array("Hello","World") arr: Array[java.lang.String] = Array(Hello, World) -
可能这就是你需要的: val tmp = arr_one map ((arr1) => {arr_two map (arr2 => (arr1 zip arr2) map {case(a, b) => a * b} reduce (_ + _))} ) 要获得ArrayBuffer只需使用: tmpArr = tmp.toBuffer May be this is what you need: val tmp = arr_one map ((arr1) => {arr_two map (arr2 => ...
-
我如何在Scala中执行此操作?(How would I do this in Scala?)[2019-12-15]
我想你错过了回归类型: override def accept(o: GameObject) = {...} 要么 override def accept(o: GameObject): Boolean = {...} 这两个变体是相同的(假设您实际上在此方法的主体中返回一些布尔值)。 如果你定义这样的accept方法: override def accept(o: GameObject) {...} 然后它是一样的: override def accept(o: GameObject): Unit ... -
使用微风 Vector : scala> val arr = Array(Array(1, 100), Array(2, 200), Array(3, 300)) arr: Array[Array[Int]] = Array(Array(1, 100), Array(2, 200), Array(3, 300)) scala> arr.map(breeze.linalg.Vector(_)).reduce(_ + _) res0: breeze.linalg.Vector[Int] = DenseVec ...
-
使用java的Scala数组(Using Scala array from java)[2023-08-12]
用2.7,你应该可以 Tree[] t = (Tree)ScalaObject.myScalaFunction().unbox(Tree.class); 在Java中。 有了2.8,它会像你希望的那样工作。 With 2.7, you should be able to Tree[] t = (Tree)ScalaObject.myScalaFunction().unbox(Tree.class); in Java. With 2.8, it will work as you hoped it woul ... -
scala如何匹配数组?(How does scala match on Arrays?)[2022-09-26]
您可以在任何类上使用此语法进行模式匹配,只要您具有带有unapplySeq或unapplySeq (在varargs的情况下)方法的对象,该方法返回Option或Boolean 。 这些被称为提取器 。 来自对象Array有问题的行是 def unapplySeq[T](x: Array[T]): Option[IndexedSeq[T]] = if (x == null) None else Some(x.toIndexedSeq) 在您的示例中,您可以使用它来匹配它 class A(va ... -
Scala BigInt数组(Scala BigInt Array)[2022-05-25]
cube的类型为BigInt。 所以Array(cube)的类型是Array [BigInt] master(perm)的类型是Array [Int],您正在尝试这样做 Array[Int] :+ BigInt => Array[Int], which does not work. 建议:创建BigInt类型的所有数组。 所以: var m = new scala.collection.mutable.LinkedHashMap[String,Array[BigInt]] var master = m.w ... -
在scala中合并数组(Merging Arrays in scala)[2022-03-13]
只要您的数组具有相同的长度,就可以使用zip和map来完成 定义数组 scala> Array("1", "2", "3") res0: Array[String] = Array(1, 2, 3) scala> Array("orange", "Apple", "Grape") res1: Array[String] = Array(orange, Apple, Grape) scala> Array("Milk", "juice", "cream") res2: Array[String] = Ar ... -
在scala中输入数组(Input array in scala)[2022-02-13]
试试这个: val s = readLine val a: Array[Int] = s.split(" ").map(_.toInt) 或val a = readLine.split(" ").map(_.toInt) ;) Try this: val s = readLine val a: Array[Int] = s.split(" ").map(_.toInt) or val a = readLine.split(" ").map(_.toInt) ;)