scala学习笔记之数组

原创 2016年08月29日 15:37:33

scala数组角标从0开始,使用(index)访问元素,和java不同,可以创建一个数组缓存

object ArrayDemo extends App {
  //数组的声明
  //  var z:Array[String] = new Array[String](3)
  //  var z = new Array[String](3)
  var array1 = Array(1, 2, 1.5, "abc");
  var array2 = new Array[String](1); //定义数组的另一种方式,角标是从0开始的
  // apply( x: T, xs: T* ): Array[T]创建指定对象 T 的数组
  var array3 = Array.apply(1, 2, 3)
  array2(0) = "hehe" //数组的赋值

  //数组的合并Array.concat
  var concatArray = Array.concat(array2, array2)

  //二维数组->多维数组
  //def ofDim[T]( n1: Int ): Array[T]创建指定长度的数组
  //def ofDim[T]( n1: Int, n2: Int ): Array[Array[T]]创建二维数组
  //def ofDim[T]( n1: Int, n2: Int, n3: Int ): Array[Array[Array[T]]]创建三维数组
  var manyDimensions1 = Array((1, 2, 3), (4, 5, 6))
  var manyDimensions2 = new Array[Array[String]](3)
  var manyDimensions3 = Array.ofDim[String](3, 2)
  manyDimensions2(0) = Array("ee") //赋值
  manyDimensions3(0)(1) = "String" //赋值

  //empty[T]: Array[T]返回长度为 0 的数组
  var emotyArr = Array.empty[String]

  //range( start: Int, end: Int, step: Int ): Array[Int]创建指定区间内的数组,step 为每个元素间的步长
  //range( start: Int, end: Int ): Array[Int]创建指定区间内的数组
  var a1 = Array.range(0, 10)
  var a2 = Array.range(0, 10, 2)

  //变长数组:缓冲数组
  //import scala.collection.mutable.ArrayBuffer
  var bufferArray = new ArrayBuffer[Int](); //()可以省略
  bufferArray += 1 //在末尾添加一个值或多个值      高效的添加
  bufferArray += (1, 2, 3) //在末尾添加一个值或多个值
  bufferArray ++= Array(1, 2, 3) //在末尾添加一个值或多个值,如果是集合,就需要用++=
  bufferArray.trimEnd(3) //移除末尾的3个数
  bufferArray.insert(2, 2) //指定角标位置添加一个或多个数                                  //效率偏低
  bufferArray.insertAll(2, Array(2, 3, 4)) //指定角标位置添加一个集合    //效率偏低
  bufferArray.remove(2) //移除哪个元素
  bufferArray.remove(2, 2) //从第2个角标开始移除2个元素

  //遍历数组
  for (a <- array1) { //直接遍历数组
    println(a)
  }
  for (i <- 0 until array1.length) { //使用下表遍历数组
    println(array1(i))
  }
  for (i <- 0 until (array1.length, 2)) { //从0开始没2个循环一次
    println(array1(i))
  }
  for (i <- (0 until array1.length).reverse) { //倒序遍历
    println(array1(i))
  }
  val iter = array1.iterator; //使用迭代器
  while (iter.hasNext) {
    println(iter.next())
  }

  //数组的转换

  var newArray1 = for (a <- array1 if a != 1) yield (a + "aaa") //方式1,除了值为1的所有元素都加上aaa
  var newArray2 = array1.filter { _ != 1 }.map { _ + "bbb" }    //方式2
  var newArray3 = array1.filter { _ != 1 } map { _ + "bbb" }    //方式3

  //数组的常用算法
  var array4 = Array.apply(1, 5, 6, 4, 5)
  var sum = array4.sum //求和
  var max = array4.max //求最大值
  var min = array4.min //求最小值
  val sortArray = array4.sorted    //排序
  var s1 = array4.mkString("and")                //result  1 and 2 and 3 and 4 and 5
  var s2 = array4.mkString("<", "and", ">")      //result  <1 and 2 and 3 and 4 and 5>

}
版权声明:本文为博主原创文章,未经博主允许不得转载。

Scala学习笔记02【数组、列表、元组、集合和映射】

1、使用类型参数化数组【Array】Scala使用new实例化对象或类实例。 当在Scala里实例化对象,可以使用值和类型把它参数化:parameterize。 参数化的意思是在你创建实例的时候”...

Scala学习笔记之 --- Array、ArrayBuffer以及遍历数组(1)

Array在Scala中,Array代表的含义与Java中类似,也是长度不可改变的数组。此外,由于Scala与Java都是运行在JVM中,双方可以互相调用,因此Scala数组的底层实际上是Java数组...

Scala学习笔记--数组

对于Scala来说,数组是一块相当总要的内容,因此掌握是十分重要的。 数组分为两种:定长数组(Array) 变长数组(Arraybuffer) Array: //10个整数的数组,所有元...

Scala学习笔记(二)--数组、列表、元祖和scala脚本编写及读取文件

使用类型参数化数组(Array) 在scala中使用new实例化对象(或者叫类实例)。实例化过程中,可以用值和类型使对象参数化。参数化的意思是指在创建实例的同时完成对它的“设置”。 例如, va...

Scala学习笔记08【Scala数组实用操作】

Scala 数组实用操作实战import scala.collextion.mutable.ArrayBufferobject ArrayTest{ def main(args: Array[Str...

[Scala]Scala学习笔记二 数组

1. 定长数组如果你需要一个长度不变的数组,可以使用Scala中的Array.val nums = new Array[Int](10) // 10个整数的数组 所有元素初始化为0 val strs ...

scala学习笔记

  • 2016年04月13日 11:44
  • 9KB
  • 下载

Scala编程_学习笔记

  • 2016年12月18日 19:16
  • 4.71MB
  • 下载

Scala学习笔记(2)

Scala基本语言特性相比Java``C++等语言,Scala融合了OOP``FP等编程范式,同时语法上更灵活。语法基础(概览) Scala语言中不强制要求分号,可以依行断句,只有一行带有多个语句时才...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:scala学习笔记之数组
举报原因:
原因补充:

(最多只允许输入30个字)