`

学习scala笔记--5 scala数组

 
阅读更多

 

 

 

 

数组声明

scala> val a = new Array[Int](10)

a: Array[Int] = Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)

 

 

使用时 a(0)---  和 Java不同 Java: a[0]

scala> a(0)=1

 

 

scala> for(x<-a){print(x)}

1000000000

 

 

----------------------------------

 

 

 

scala通过mkString方法把一个集合转化为一个字符串

 

 

scala> val b =Array("hello","world","!")

b: Array[String] = Array(hello, world, !)

 

scala> b.mkString

res9: String = helloworld!

 

scala> b.mkString("-")

res10: String = hello-world-!

 

 

 

----------------------------------

 

类型推断:

 

scala> val c = Array("hello",7)

c: Array[Any] = Array(hello, 7)

 

 

----------------------------------

 

 

Array长度不可变  c.length 获取长度

 

scala> val c = Array("hello",7)

c: Array[Any] = Array(hello, 7)

 

scala> c.length

res11: Int = 2

 

scala> 

 

scala> c(3)

java.lang.ArrayIndexOutOfBoundsException: 3

  ... 28 elided

 

----------------------------------

ArrayBuffer  是可变长的

 

 

 

scala> import scala.collection.mutable._

import scala.collection.mutable._

 

scala> val ab = new ArrayBuffer[Int]()

ab: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer()

 

scala> ab(0)=1

java.lang.IndexOutOfBoundsException: 0

  at scala.collection.mutable.ResizableArray.update(ResizableArray.scala:48)

  at scala.collection.mutable.ResizableArray.update$(ResizableArray.scala:47)

  at scala.collection.mutable.ArrayBuffer.update(ArrayBuffer.scala:48)

  ... 28 elided

 

  

注意添加元素的方式

  

scala> ab += 1

res14: ab.type = ArrayBuffer(1)

 

scala> ab += 2

res15: ab.type = ArrayBuffer(1, 2)

 

scala> ab += 3

res16: ab.type = ArrayBuffer(1, 2, 3)

 

 

----------------------------------

 

ArrayBuffer 添加Array  使用 ++=

 

scala> val f = Array(100,200,300)

f: Array[Int] = Array(100, 200, 300)

 

scala> ab ++=f

res18: ab.type = ArrayBuffer(1, 2, 3, 100, 200, 300)

 

----------------------------------

 

 

ArrayBuffer  插入元素

 

scala> ab.insert(3,999)

 

scala> print(ab)

ArrayBuffer(1, 2, 3, 999, 100, 200, 300)

 

----------------------------------

 

ArrayBuffer  移除元素

 

scala> ab.remove(3)

res21: Int = 999

 

scala> print(ab)

ArrayBuffer(1, 2, 3, 100, 200, 300)

 

----------------------------------

 

ArrayBuffer删掉多个元素

 

 

scala> print(ab)

ArrayBuffer(1, 2, 3, 100, 200, 300)

scala> ab.remove(3,3)

 

scala> print(ab)

ArrayBuffer(1, 2, 3)

 

 

----------------------------------

 

Array  和  ArrayBuffer 的转换:toArray    toBuffer

 

 

scala> val abArray = ab.toArray

abArray: Array[Int] = Array(1, 2, 3)

 

 

scala> val abArrayBuffer = abArray.toBuffer

abArrayBuffer: scala.collection.mutable.Buffer[Int] = ArrayBuffer(1, 2, 3)

 

 

----------------------------------

遍历 数组

 

scala>  for(x<- 0 until ab.length){print(ab(x))}

12345678910

scala> 

 

----------------------------------

 

指定步长

 

 

scala> for(x<- 0 until (ab.length,2)){print(ab(x))}

13579

scala> 

 

 

----------------------------------

 

反向遍历  .reverse

scala>  for(x<- (0 until (ab.length,2)).reverse ){print(ab(x))}

97531

 

 

----------------------------------

 

简单的遍历

scala> for(x <- ab) print(x)

12345678910

 

 

----------------------------------

 

 

数组元素求和 

 

scala> val a = Array(1,2,3,4,5)

a: Array[Int] = Array(1, 2, 3, 4, 5)

 

scala> val asum = a.sum

asum: Int = 15

 

 

----------------------------------

 

数组最大值 最小值

 

scala> val a = Array(1,2,3,4,5)

a: Array[Int] = Array(1, 2, 3, 4, 5)

 

scala> a.max

res42: Int = 5

 

scala> a.min

res43: Int = 1

 

 

----------------------------------

 

数组排序

 

scala> import scala.util._

import scala.util._

 

scala> Sorting.quickSort(a)

 

scala> for(x<- a) print(x+" ")

0 1 2 3 3 4 5 7 8 77 88 99 

 

----------------------------------

 

数组 转为字符串

 

 

 

scala> a.mkString("-")

res51: String = 0-1-2-3-3-4-5-7-8-77-88-99

 

 

 

scala> a.mkString("<",",",">")

res52: String = <0,1,2,3,3,4,5,7,8,77,88,99>

 

 

----------------------------------

 

 

转换数组 把每个元素转变为其 平方

 

scala> val a = Array(1,2,3,4,5,6,7,8,9,10)

a: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

 

scala> val b = for(x<- a) yield x*x 

b: Array[Int] = Array(1, 4, 9, 16, 25, 36, 49, 64, 81, 100)

 

 

----------------------------------

 

 

ArrayBuffer   把每个元素 转为其平方

 

 

scala> import scala.collection.mutable._

import scala.collection.mutable._*

 

 

scala> c ++= Array(1,2,3,4,5,6)

res53: c.type = ArrayBuffer(1, 2, 3, 4, 5, 6)

 

 

scala> val d = for(x <- c ) yield x*x 

d: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 4, 9, 16, 25, 36)

 

----------------------------------

 

使用 filter   过滤数组

 

scala> a

res56: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

 

scala> a.filter( _ % 2 ==0)

res57: Array[Int] = Array(2, 4, 6, 8, 10)

 

scala> a.filter( _ ==4)

res58: Array[Int] = Array(4)

 

scala> a.filter( _ < 5)

res59: Array[Int] = Array(1, 2, 3, 4)

 

 

 

----------------------------------

 

使用map

 

 

scala> a.filter( _ % 2 ==0).map(_ * 2)

res60: Array[Int] = Array(4, 8, 12, 16, 20)

 

 

scala> a.filter( _ % 2 ==0).map(x=> x*x)

res62: Array[Int] = Array(4, 16, 36, 64, 100)

 

分享到:
评论

相关推荐

    Scala学习笔记(全)

    ### Scala学习笔记(全) #### 一、Scala概述与特点 Scala是一种多范式的编程语言,旨在集成面向对象编程和函数式编程的各种特性。它运行于Java平台(Java虚拟机JVM),并且能够完全兼容所有的Java程序。这使得Scala...

    Scala学习笔记

    ### Scala学习笔记关键知识点 #### 1. “均码”哲学与并发编程 - **“均码”哲学**: 指的是Scala设计时遵循的一种设计理念,即尽量保持语言的统一性和简洁性,使得不同的功能和特性能够以一种相似的方式进行处理。...

    Scala详细总结(精辟版++)

    ### Scala详细总结 #### 概述 Scala是一种静态类型的编程语言,其设计旨在结合面向对象编程和函数式编程的优点,并且能在Java虚拟机(JVM)上运行。这意味着Scala能够充分利用现有的Java类库,并且能够与Java代码无缝...

    utility_Scala:Scala编程语言基本和函数式编程(fp)和Spark Scala基本演示| #SE

    Utility_Scala 在常见的用例中,通过几个基本脚本介绍了Scala programming language和Spark Scala 。 请检查以获取更多信息。 Scala项目 我的Coursera Scala系列课程的... , -Scala列表与数组非常相似,这意味着列

    scala的操作笔记

    ### Scala的操作笔记 #### 一、课程目标与学习路径 本课程旨在通过三个阶段的目标来逐步深入学习Scala语言,最终能够灵活运用Scala进行Spark程序的开发,并具备阅读Spark内核源码的能力。 - **初级目标**:掌握...

    scala学习笔记

    以上内容覆盖了 Scala 编程语言的核心知识点,从基本语法到高级特性,为初学者提供了一个全面的学习指南。Scala 是一门功能强大且灵活的语言,适合于构建大型的、复杂的软件系统。希望这些知识点能够帮助读者更好地...

    scala笔记:学习scala时的笔记

    以下是一些在学习Scala时可能会遇到的关键知识点: 1. **基本语法与类型系统**: - Scala是强类型语言,变量声明时必须指定类型,但可以使用类型推断简化编写。 - `val`用于声明不可变变量,`var`用于声明可变...

    scala-impatient-notes

    《Scala 急救手册笔记》 Scala是一种多范式的编程语言,它融合了面向对象和函数式编程的特点,被广泛应用于大数据处理、并发系统以及现代软件开发中。本笔记主要基于《Scala Impatient》这本书,旨在帮助读者快速...

    spark-scala-tutorial:Apache Spark的免费教程

    本教程“spark-scala-tutorial-master”将涵盖这些基础以及更多进阶主题,例如 Spark SQL、Spark Streaming、MLlib(机器学习库)和 GraphX。通过实践,你将掌握如何在 Scala 中有效地使用 Spark 进行大数据处理,为...

    Spark学习笔记

    ### Spark学习笔记知识点详解 #### 一、Scala基础概述 **1.1 什么是Scala** Scala是一种现代化的、多范式的编程语言,旨在融合面向对象编程与函数式编程的优势。它运行于Java平台上,能够充分利用Java虚拟机(JVM)...

    Scala中文经典教程,适合快速入门

    在学习的过程中,读者可以方便地在纸上做笔记,加深对Scala语言特性的理解。 总的来说,Scala中文经典教程是一份非常易于上手的入门资料,它简洁明了地介绍了Scala的面向对象特性,同时又通过实际代码示例,让Java...

    课堂笔记(韩顺平)

    综上所述,这些笔记内容涵盖了从后端开发到前端交互,再到服务器管理和HTTP通信的多个重要概念,是IT学习和工作中非常实用的基础知识。理解和掌握这些知识点将有助于提升开发效率和问题解决能力。

    scala-bigcollections:长索引的Scala的位和双打大集合

    由于参考基因组是30亿个碱基对,因此Int.MaxValue的位图或整数数组将不起作用。 Bed和BigBed之类的格式是此类信息的标准传输方式,但是它们似乎并不能直接转换为内存中的表示形式,该表示形式简单易行,并且可以对...

    Spark笔记,发出来希望可以帮到各位

    本笔记主要关注Spark的基础知识,同时也涉及了Scala语言的学习,因为Spark主要是用Scala编写的。 首先,Scala是一种静态类型的多范式编程语言,它结合了面向对象和函数式编程的特点。在第一章中,我们学习了Scala的...

    示例:Jupyter笔记本系列,展示了您可以使用杏仁Scala内核做什么

    2. **数据结构**:使用 Scala 的数组、列表、集合等数据结构进行操作。 3. **面向对象编程**:演示 Scala 的继承、封装和多态特性。 4. **函数式编程**:利用高阶函数、尾递归和模式匹配等函数式编程特性。 5. **...

    mxnet 中文学习笔记,代码标注,删除了python以外的接口和不感兴趣的例程。.zip

    它支持多种编程语言,包括Python、R、Java、Scala、Julia等,但在这个特定的学习笔记中,只保留了Python接口相关的知识。这份笔记可能包含了作者在学习MXNet过程中对核心概念、API的注解以及对不感兴趣或非核心示例...

    java7源码翻译-DemonstrationBPlusTree:一个用Scala写的B+Tree,供读者启蒙

    用于学习。 笔记 B-Tree 故意以笨拙的方式编码。 它使用在 Scala 中几乎没有位置的数组。 没有一种方法使用显式递归。 打字是明确的,但同样是故意粗暴的。 不花精力在提高效率上。 做出这些决定是因为代码旨在清晰...

    GitHub上最受欢迎的57个深度学习开源项目

    MXNet 是一个轻巧、便携、灵活的分布式/移动深度学习框架,支持 Python, R, Julia, Scala, Go, Javascript 等语言。 Theano 是一个 Python 库,用来定义、优化和模拟数学表达式计算,用于高效的解决多维数组的计算...

    sparkMlib学习1

    SparkMLlib学习笔记 SparkMLlib是 Apache Spark 机器学习库,提供了一个统一的 API,用于机器学习任务的开发。SparkMLlib 提供了多种数据类型,包括 Vector、LabeledPoint 和 Matrix 等。这些数据类型是机器学习...

Global site tag (gtag.js) - Google Analytics