1.创建和更新数组的不同方式

1)定义一个数组的初始大小和类型,随后填充值。

scala> val array = new Array[String](3)
array: Array[String] = Array(null, null, null) scala> array(0) = "abc" scala> array(1) = "def" scala> array(2) = "hij" scala> array
res66: Array[String] = Array(abc, def, hij)

2)创建指向数组的var引用,然后赋值给它。

scala> var fruits: Array[String] = _
fruits: Array[String] = null scala> fruits = Array("apple","orange","banana")
fruits: Array[String] = [Ljava.lang.String;@79a73e5e scala> fruits
res67: Array[String] = Array(apple, orange, banana)

3)集合混合类型组成。

scala> val x =Array(1,2.0,33D,400L)
x: Array[Double] = Array(1.0, 2.0, 33.0, 400.0)

4)集合混合类型组成,可以有自己控制。下面的例子的数组保持了原有数组的类型。

scala> val x =Array[Number](1,2.0,33D,400L)
x: Array[Number] = Array(1, 2.0, 33.0, 400)

5)range创建和填充数组。

scala> val x = Array.range(1,10)
x: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9) scala> val x = Array.range(1,10,2)
x: Array[Int] = Array(1, 3, 5, 7, 9)

6)fill创建和填充数组。

scala> val x = Array.fill(3)("hello")
x: Array[String] = Array(hello, hello, hello)

7)tabulate创建和填充数组。

scala> val x = Array.tabulate(5)(i => i * i)
x: Array[Int] = Array(0, 1, 4, 9, 16)

8)将list集合转化为数组的形式。

scala> val x = List(1,2,3,4,5).toArray
x: Array[Int] = Array(1, 2, 3, 4, 5)

9)将字符串转化为数组的形式。

scala> "hello".toArray
res68: Array[Char] = Array(h, e, l, l, o)

10)通过()的索引,就可以访问对应的元素。

scala> val x = Array(1,3,4,5,7,9)
x: Array[Int] = Array(1, 3, 4, 5, 7, 9) scala> x(0)
res70: Int = 1 scala> x(3)
res71: Int = 5

11)更新数组就是把访问的元素给到一个值即可完成更新。

scala> x(3) = 30

scala> x
res73: Array[Int] = Array(1, 3, 4, 30, 7, 9)

2.创建大小可变的数组(ArrayBuffer)

1)Array是可变的,因为它的内容可以改变,但是其大小是不能进行改变的。想要创建一个大小和值都可变的索引序列,可以使用ArrayBuffer。

scala> import scala.collection.mutable.ArrayBuffer
import scala.collection.mutable.ArrayBuffer scala> var x = ArrayBuffer[String]()
x: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer() scala> x += "aa"
res74: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(aa) scala> x += "bb"
res75: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(aa, bb) scala> x += "cc"
res76: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(aa, bb, cc) scala> x
res77: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(aa, bb, cc)

2)可以在创建ArrayBuffer时就添加元素,之后继续添加。

scala> val x = collection.mutable.ArrayBuffer("aa","bb")
x: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(aa, bb) scala> x += "cc"
res78: x.type = ArrayBuffer(aa, bb, cc)

3)可以使用++=添加元素到数组中去。

scala> val x = collection.mutable.ArrayBuffer("aa","bb")
x: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(aa, bb) scala> x ++= Seq("dd","ee")
res79: x.type = ArrayBuffer(aa, bb, dd, ee)

4)可以使append方法添加元素到数组中去。

scala> val x = collection.mutable.ArrayBuffer("aa","bb")
x: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(aa, bb) scala> x.append("ww","oo","pp") scala> x
res81: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(aa, bb, ww, oo, pp)

3.删除Array和ArrayBuffer中的元素

1)使用-=删除一个或者多个元素。

scala> import scala.collection.mutable.ArrayBuffer
import scala.collection.mutable.ArrayBuffer scala> val x = ArrayBuffer("c","d","a","e","f")
x: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(c, d, a, e, f) scala> x -= "a"
res82: x.type = ArrayBuffer(c, d, e, f) scala> x -= ("c","d")
res83: x.type = ArrayBuffer(e, f)

2)使用--=删除定义在另一个集合中的多个元素。

scala> val x = ArrayBuffer("c","d","a","e","f")
x: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(c, d, a, e, f) scala> x --= Seq("a","c")
res84: x.type = ArrayBuffer(d, e, f) scala> x --= Array("d")
res85: x.type = ArrayBuffer(e, f) scala> x --= Set("f")
res86: x.type = ArrayBuffer(e)

3)根据ArrayBuffer中元素的位置使用remove删除元素,或者根据开始位置删除一系列的元素。

scala> import scala.collection.mutable.ArrayBuffer
import scala.collection.mutable.ArrayBuffer scala> val x = ArrayBuffer("c","d","a","e","f")
x: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(c, d, a, e, f) scala> x.remove(0)
res0: String = c scala> x
res1: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(d, a, e, f) scala> x.remove(1,3) scala> x
res3: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(d)

4)clear方法可以删除数组中的所有元素。

scala> import scala.collection.mutable.ArrayBuffer
import scala.collection.mutable.ArrayBuffer scala> val x = ArrayBuffer("c","d","a","e","f")
x: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(c, d, a, e, f) scala> x.clear scala> x
res5: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer()

5)定义数组变量var,通过过滤的方式删除元素,重新将结果赋给自己。

scala> var a = Array("apple","orange","banana")
a: Array[String] = Array(apple, orange, banana) scala> a = a.take(2)
a: Array[String] = [Ljava.lang.String;@405223e4 scala> a
res6: Array[String] = Array(apple, orange)

4.数组的排序

将一个数组或者ArrayBuffer中的元素进行排序。如果正在使用的是一个包含隐式排序元素的Array,可以使用scala.util.Sorting.quickSort方法对该Array进行排序。

scala> val x = Array("cherry","apple","banana")
x: Array[String] = Array(cherry, apple, banana) scala> scala.util.Sorting.quickSort(x) scala> x
res8: Array[String] = Array(apple, banana, cherry) scala> val x = Array(2,4,1,9,5,7)
x: Array[Int] = Array(2, 4, 1, 9, 5, 7) scala> scala.util.Sorting.quickSort(x) scala> x
res10: Array[Int] = Array(1, 2, 4, 5, 7, 9)

5.创建多维数组

1)使用Array.ofDim方法创建所需要的数组。

scala> val rows = 2
rows: Int = 2 scala> val cols = 3
cols: Int = 3 scala> val x = Array.ofDim[String](rows,cols)

2)给多维数组添加元素。

scala> x(0)(0) = "a"

scala> x(0)(1) = "b"

scala> x(0)(2) = "c"

scala> x(1)(0) = "d"

scala> x(1)(1) = "e"

scala> x(1)(2) = "f"

scala> x
res17: Array[Array[String]] = Array(Array(a, b, c), Array(d, e, f))

3)根据索引的具体位置访问元素。

scala> val a = x(1)(1)
a: String = e

用for循环遍历数组的元素:

scala> for {
| i <- 0 until rows
| j <- 0 until cols
| } println(s"($i)($j) = ${x(i)(j)}")
(0)(0) = a
(0)(1) = b
(0)(2) = c
(1)(0) = d
(1)(1) = e
(1)(2) = f

4)创建三维数组。

scala> val x,y,z = 3
x: Int = 3
y: Int = 3
z: Int = 3 scala> val a = Array.ofDim[Int](x,y,z)
a: Array[Array[Array[Int]]] = Array(Array(Array(0, 0, 0), Array(0, 0, 0), Array(0, 0, 0)), Array(Array(0, 0, 0), Array(0, 0, 0), Array(0, 0, 0)), Array(Array(0,0, 0), Array(0, 0, 0), Array(0, 0, 0))) scala> for {
| i <- 0 until x
| j <- 0 until y
| z <- 0 until z
| } println(s"($i)($j)($z) = ${a(i)(j)(z)}")
(0)(0)(0) = 0
(0)(0)(1) = 0
(0)(0)(2) = 0
(0)(1)(0) = 0
(0)(1)(1) = 0
(0)(1)(2) = 0
(0)(2)(0) = 0
(0)(2)(1) = 0
(0)(2)(2) = 0
(1)(0)(0) = 0
(1)(0)(1) = 0
(1)(0)(2) = 0
(1)(1)(0) = 0
(1)(1)(1) = 0
(1)(1)(2) = 0
(1)(2)(0) = 0
(1)(2)(1) = 0
(1)(2)(2) = 0
(2)(0)(0) = 0
(2)(0)(1) = 0
(2)(0)(2) = 0
(2)(1)(0) = 0
(2)(1)(1) = 0
(2)(1)(2) = 0
(2)(2)(0) = 0
(2)(2)(1) = 0
(2)(2)(2) = 0

  

scala的多种集合的使用(5)之数组Array(ArrayBuffer)的操作的更多相关文章

  1. scala的多种集合的使用(4)之列表List(ListBuffer)的操作

    1.List列表的创建和添加元素 1)最常见的创建list的方式之一. scala> val list = 1 :: 2 :: 3 :: Nil list: List[Int] = List(1 ...

  2. scala的多种集合的使用(6)之映射Map的操作方法

    1.创建映射 1)创建不可变的映射 scala> val status = Map(1 -> "a",2 -> "b") status: sc ...

  3. scala的多种集合的使用(1)之集合层级结构与分类

    一.在使用scala集合时有几个概念必须知道: 1.谓词是什么? 谓词就是一个方法,一个函数或者一个匿名函数,接受一个或多个函数,返回一个Boolean值. 例如:下面方法返回true或者false, ...

  4. scala的多种集合的使用(3)之遍历集合的方法

    遍历集合的方法 1.用foreach循环遍历一个集合 foreach接收一个函数作为参数.定义的函数应该接收一个元素作为输入参数,然后不要返回任何的东西.输入的参数的类型应该匹配集合中的类型.随着fo ...

  5. scala的多种集合的使用(2)之集合常用方法

    一.常用的集合方法 1.可遍历集合的常用方法 下表列出了Traverable在所有集合常用的方法.接下来的符号: c代表一个集合 f代表一个函数 p代表一个谓词 n代表一个数字 op代表一个简单的操作 ...

  6. scala的多种集合的使用(8)之队列和栈的操作方法

    1.使用队列 队列是一种那个先进先出的队列.1)创建一个队列. scala> import scala.collection.mutable.Queue import scala.collect ...

  7. scala的多种集合的使用(7)之集Set的操作方法

    1.给集添加元素 1)用+=.++=和add给可变集添加元素. scala> var set = scala.collection.mutable.Set[Int]() set: scala.c ...

  8. scala学习笔记-集合

    变长数组:数组缓冲 Scala中对于那种长度会变的数组的数据结构为ArrayBuffer. import scala.collection.mutable.ArrayBuffer; // 一个空的数组 ...

  9. Programming In Scala笔记-第十七章、Scala中的集合类型

    本章主要介绍Scala中的集合类型,主要包括:Array, ListBuffer, Arraybuffer, Set, Map和Tuple. 一.序列 序列类型的对象中包含多个按顺序排列好的元素,可以 ...

随机推荐

  1. 你连Nginx怎么转发给你请求都说不清楚,还好意思说自己不是CRUD工程师?

    目录 一.Nginx工作原理二.Nginx进程模型三.Nginx处理HTTP请求流程 Nginx 工作原理 Nginx由内核和模块组成,Nginx本身做的工作实际很少,当它接到一个HTTP请求时,它仅 ...

  2. SpinnerViewPop【PopWindow样式(单选)、Dialog样式(单选+多选)的下拉菜单】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 对下拉菜单的文本区域和列表区域进行了封装.包括两种展现方式:popwindow(单选).dialog(单选+多选) 因为该封装需要在 ...

  3. linux下安装libcurl及开源库的一般安装步骤

    前言 总有人说:要多看源代码!那么源代码去哪找呢?找到了又该怎么安装呢?本票博客不介绍如何使用和学习,只要讲获取和安装,以后会将curl和libevent的使用和学习. 一.开源库常用安装步骤 1.开 ...

  4. Docker系列之入门篇

    Dcoker是什么? 概述 Docker 是世界领先的软件容器平台.开发人员利用 Docker 可以消除协作编码时“在我的机器上可正常工作”的问题.运维人员利用 Docker 可以在隔离容器中并行运行 ...

  5. SpringBoot技术栈搭建个人博客【前台开发/项目总结】

    前言:写前台真的是我不擅长的东西...所以学习和写了很久很久...前台页面大概开发了两天半就开发好了,采用的静态的html和bootstrap来写,写后台的时候纠结住了...怎么说呢,写页面真的是头疼 ...

  6. Linux之用户和权限

    自从我大微软终于放下身段,决定给开源社区一个迟来的拥抱,追随多年的拥趸们像是突然得到了女神的垂青,各种茫然失措.痛哭流涕.欢欣鼓舞,纷纷唱了起来:“等了好久终于等到今天,梦了好久终于把梦实现……”唱完 ...

  7. Springboot 系列(四)Spring Boot 日志框架

    注意:本 Spring Boot 系列文章基于 Spring Boot 版本 v2.1.1.RELEASE 进行学习分析,版本不同可能会有细微差别. 前言 Spring 框架选择使用了 JCL 作为默 ...

  8. Less与TypeScript的简单理解与应用,并使用WebPack打包静态页面

    既然选择了远方,便只顾风雨兼程 __ HANS许 系列:零基础搭建前后端分离项目 系列:零基础搭建前后端分离项目 创建空项目 使用Less 使用TypeScript 使用WebPack 开始写项目 总 ...

  9. Java 原始模型(Prototype)模式

    一.什么是原型模式: 通过给出一个原型对象指明所要创建的对象的类型,然后通过复制这个原型对象来获取的更多的同类型的对象. 在Java语言中,支持原型模式,所有的对象都继承自Object对象,Objec ...

  10. .NET Framework VS .NET Core

    本文对应的原文来至 c-sharpcorner 的一篇文章,文末有链接.如有错误,还请指正. 前言 你会为你的下一个应用程序选择哪一种开发平台 - .NET Framework 或者 .NET Cor ...