Scala数组操作

xiaoxiao2021-02-28  31

Scala数组操作:

1.定长数组

长度不变的数组的声明: [java]  view plain  copy //长度为10的整数数组,所有元素初始化为0   val numArr = new Array[Int](10)    //长度为10的字符串数组,所有元素初始化为null  val numArr = new Array[String](10)    //长度为2的数组,数据类型自动推断出来,已经提供初始值就不需要new关键字  val s = Array("cai","yong")    //通过ArrayName(index)访问数组元素和更改数组元素  val s = Array("cai","yong")   println(s(0))  s(0) = "haha"  println(s(0))   输出: cai haha

2.变长数组:数组缓冲

Scala也支持长度变化的数组,支持的数据结构是ArrayBuffer [java]  view plain  copy //一个空的数组缓冲,准备存放整数   val ab = ArrayBuffer[Int]()   val ab2 = new ArrayBuffer[Int]    //用+=在尾部添加元素  ab += 2    //在尾部添加多个元素  ab += (1,2,3,4,5)    //通过++=往数组缓冲后面追加集合   ab ++= Array(6,7,8,9)    //使用trimEnd(n)移除尾部n个元素  ab.trimEnd(3)    //在下标3之前插入元素  ab.insert(333)    //插入多个元素,第一个值为index,后面所有的值为要插入的值  ab.insert(3,3,4,5,6)    //移除某个位置的元素  ab.remove(3)    //移除从下标为n开始(包括n)的count个元素  ab.remove(n, count)           有时候需要构造一个Array,但是不知道具体要存放多少元素,可以先构造ArrayBuffer,再调用toArray方法转化成Array,同样,对Array调用toBuffer方法可以转成ArrayBuffer. 注:在数组缓冲的尾部进行元素添加移除操作的效率很高,但是在任意位置插入或移除元素的效率并不太高效,因为涉及到数组元素的移动。

3.遍历数组

[java]  view plain  copy //for循环遍历  for(i <- 0 until ab.length){   print(ab(i) + ", ")   }    //根据特定步长遍历数组  for(i <- 0 until (ab.length, 2)){   print(ab(i) + ", ")   }    //从数组的尾部开始向前遍历数组  for(i <- (0 until ab.length).reverse){   print(ab(i) + ", ")  }    //类似于Java中的foreach遍历数组   for(elem <- ab){   print(elem + ", ")  }  

4.数组转换

[java]  view plain  copy //进行数组转换会生成一个新的数组,而不会修改原始数组   val change = for(elem <- ab) yield elem * 2  for(elem <- change){  print(elem + ", ")   }    //添加一个守卫的数组转换  val change = for(elem <- ab if elem%2 == 0) yield elem * 2  

5.数组操作常用算法

[java]  view plain  copy //sum求和(数组与阿奴必须是数值型数据)  println(change.sum)    //min max 输出数组中最小和最大元素  println(change.min)  println(change.max)    //使用sorted方法对数组或数组缓冲进行升序排序,这个过程不会修改原始数组   val sortArr = ab.sorted    for(elem <- sortArr)   print(elem + ", ")    //使用比较函数sortWith进行排序  val sortArr = ab.sortWith(_>_)    //数组显示   println(sortArr.mkString("|"))   println(sortArr.mkString("startFlag","|","endFlag"))  

6.多维数组

[java]  view plain  copy //构造一个2行3列的数组  val arr = Array.ofDim[Int](2,3)  println(arr.length)  println(arr(0).length)  arr(0)(0) = 20  println(arr(0)(0))    //创建长度不规则的数组  val arr = new Array[Array[Int]](3)           for(i <- 0 until arr.length){  arr(i) = new Array[Int](i + 2)  }          for(i <- 0 until arr.length){  println(arr(i).length)  }  

*****************以上内容摘自:《快学Scala》  [美]Cay S. Horstmann著   电子工业出版社****************

转载请注明原文地址: https://www.6miu.com/read-2603265.html

最新回复(0)