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

val a = new Array[Int](10)

val a = new Array[String](10) 

可以直接使用Array()创建数组,元素类型自动推断

val a = Array("Hello","world")

a(0) ="hi"

val a = Array("Hello",30)

a:

Array[Any]("Hello",30)

ArrayBuffer:

在Sacla中,如果需要类似于JAVA中的ArrayList这种可变长度的集合类,则可以使用ArrayBuffer.

#如果不想每次都是用完全限定名,则可以预先导入ArrayBuffer类
import scala.collection.mutable.ArrayBuffer
//使用ArrayBuffer的方式可以创建一个空的ArrayBuffer
val b = ArrayBuffer[Int]()
//使用+=操作符,可以添加一个元素,或者多个元素
//这个语法必须谨记在心!因为Sprak源码里大量使用了这种集合操作语法!
b+=1
b+=(2,3,4,5)
//使用++=操作符,可以添加一个元素,或者多个元素
b++=Array(6,7,8,9)
//使用trimEnd()函数,可以从尾部截断指定个数的元素
b.trimEnd(5)
//使用insert()函数可以在指定位置插入元素
//但是这种操作效率很低,因为需要移动指定位置后的所有元素
b.insert(5,6)
b.insert(6,7,8,9,10)
//使用remove()函数可以移除指定位置元素
b.remove(1)
b.remove(1,3)
//Array与ArrayBuffer可以互相进行转换
b.toArray
a.toBuffer

遍历Array和ArrayBuffer

//使用for循环和until遍历Array/ArrayBuffer
/使用until是RichInt提供的函数
for(i <- 0 until b.length)
println(b(i))
//跳跃遍历Array/ArrayBuffer
for(i <- until (b.length,2))
println(b(i))
//从尾部遍历Array/ArrayBuffer
for(i <- (0 until b.length).reverse)
print(b(i))
//使用"增强型for循环" 遍历Array/AraayBuffer
for(e <- b)
print(e)

数组常见的操作:

//数组元素求和
val a = Array(1,2,3,4,5)
val sum = a.sum
//获取数组最大值
val max = a.max
//对数组进行排序
scala.util.Sorting.quickSort(a)
//获取数组中的所有元素类容
a.mkString
a.mkString(",")
a.mkString("<",",",">") //toString函数
a.toString
b.toString

Scala编程入门---数组操作之Array.ArrayBuffer以及遍历数组的更多相关文章

  1. Scala 数组操作之Array、ArrayBuffer以及遍历数组

    ArrayBuffer 在Scala中,如果需要类似于Java中的ArrayList这种长度可变的集合类,则可以使用ArrayBuffer. // 如果不想每次都使用全限定名,则可以预先导入Array ...

  2. javascript数组操作(创建、元素删除、数组的拷贝)

    这篇文章主要介绍了javascript数组操作,包括创建.元素的访问.元素删除.数组的拷贝等操作,还有其它示例,需要的朋友可以参考下 1.数组的创建 复制代码 代码如下: var arrayObj = ...

  3. JavaScript基础精华03(String对象,Array对象,循环遍历数组,JS中的Dictionary,Array的简化声明)

    String对象(*) length属性:获取字符串的字符个数.(无论中文字符还是英文字符都算1个字符.) charAt(index)方法:获取指定索引位置的字符.(索引从0开始) indexOf(‘ ...

  4. Scala编程入门---数组操作之数组转换

    使用yield和函数式编程转换数组 //对Array进行转换,获取的还是Aarry val a = Array(1,2,3,4,5) val a2 = for(ele <- a) yield e ...

  5. Scala编程入门---函数式编程之集合操作

    集合的函数式编程: 实战常用: //map案例实战:为List中的每个元素都添加一个前缀. List("leo","Jen","peter" ...

  6. Scala编程入门---函数式编程

    高阶函数 Scala中,由于函数时一等公民,因此可以直接将某个函数传入其他函数,作为参数.这个功能是极其强大的,也是Java这种面向对象的编程语言所不具备的. 接收其他函数作为函数参数的函数,也被称作 ...

  7. Scala编程入门---Map与Tuple

    创建Map //创建一个不可变的Map val ages = Map("Leo" -> 30,"Jen" ->25,"Jack" ...

  8. Scala编程--基本类型和操作

    如果你熟悉Java,你会很开心地发现Java基本类型和操作符在Scala里有同样的意思.然而即使你是一位资深Java开发者,这里也仍然有一些有趣的差别使得本章值得一读.因为本章提到的一些Scala的方 ...

  9. Scala编程入门---面向对象编程之对象

    对象 Object,相当于class单个实例,通常在里面放一些静态的filed或method 第一次调用object方法时候,就会执行object的constructor,也就是Object中不在me ...

随机推荐

  1. Mybatis插件原理分析(三)分页插件

    在Mybatis中插件最经常使用的是作为分页插件,接下来我们通过实现Interceptor来完成一个分页插件. 虽然Mybatis也提供了分页操作,通过在sqlSession的接口函数中设置RowBo ...

  2. 老司机带你玩转web service

    当大型需求被数个公司分割开来,各公司系统相互交换数据的问题就会接踵而来.毕竟是多家不同的公司的产品,研发开发语言.采用技术框架基本上是百花齐放.怎样让自家系统提供的服务具有跨平台.跨语言.跨各种防火墙 ...

  3. jdbc连接mysql加载驱动程序com.mysql.jdbc.Driver

    在开发环境如eclipse,中加载指定数据库的驱动程序.需要下载MySQL支持JDBC的驱动程序mysql-connector-java-5.1.25-bin.jar. 而具体在Java程序中加载驱动 ...

  4. 关于Debug和Release之本质区别的讨论

    一.Debug 和 Release 编译方式的本质区别     Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序.Release 称为发布版本,它往往是进行了各种优化 ...

  5. OC学习之道:关于Block的初级学习

    [objc] view plaincopy "code" class="OC"> // //  main.m //  Copyright (c) 2015 ...

  6. Git版本控制 — 日常使用(二)

    本地使用 以下是我的一些日常操作. (1) 创建版本库 # cd /proj # git init Initialized empty Git repository in /proj/.git/ (2 ...

  7. javascript语法之循环语句

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. Spring BeanFactory getBean 源码剖析

    首先看一张时序图 最开始,一切都来自这里: public static void main(String[] args) { ApplicationContext context = new Clas ...

  9. uploadify在火狐下上传不了的解决方案,java版(Spring+SpringMVC+MyBatis)详细解决方案

     由于技术选型的原因,在一个产品中,我选择了uploadify,选择它的原因是它有完善的技术文档说明(http://www.uploadify.com/documentation/),唯一不足的是 ...

  10. PDA智能设备解决方案打包及部署

    演练:打包智能设备解决方案以便进行部署 Visual Studio 2008 本演练演示如何使用 Visual Studio 将应用程序及其资源打包到一个 CAB 文件中,以便可将其部署到最终用户的智 ...