基础内容

1. 数组定义

定长、可变数组的定义;元素添加,删除,排序,求和等常用运算

import scala.collection.mutable.ArrayBuffer
import scala.math.BigDecimal.RoundingMode /**
* @author xwolf
* @date 2017-04-09 18:23
* @since 1.8
*/
object Collection { def main(arg:Array[String]): Unit ={ multipleArray()
} /**
* 数组创建
*/
private def create() :Unit={
val a = new Array[String](1)
a(0)="Hello" println(a.toBuffer)
val ab =ArrayBuffer(3)
ab+=1
//append 可接受多个参数,在数组末尾追加元素
ab.append(12,3,3)
ab ++=Array(5,12)
println("insert after 1: "+ ab)
ab += (3,5)
println("insert after 2: "+ ab)
// 在指定索引 添加元素
ab.insert(2,123,32)
println("remove before:"+ab)
//移除当前索引的元素
ab.remove(1)
println("remove after 1:"+ ab)
//移除当前索引开始的元素的个数,超出会抛出下标越界异常
ab.remove(4,3)
println(ab)
val ary = ab.toArray
val arrayB = ary.toBuffer
println(arrayB) } /**
* 排序
*/
def sort(){
val ary =ArrayBuffer[Int]()
ary ++=Array(1,123,3,123,4,12,10)
println(ary) val a = ary.sortBy(x=>x)
println(a)
//自定义排序
val c= ary.sortWith((a,b)=>a.compareTo(b)<0)
println(c)
val d= ary.sortWith((a,b)=>a.compareTo(b)>0) val f = ary.sorted
println(f)
println(d)
//去重 过滤 map
val e = d.distinct.filter(_.%(2)!=0).map(_.+(2))
println(e)
} /**
* 常用运算
*/
def calculator():Unit={
val ary =Array(12,2,12,33,2,123,1)
println(ary.max)//最大
println(ary.min)//最小值
println(ary.sum)//求和
println(average(ary))//求平均值
} /**
* 求数组的平均值 四舍五入保留两位小数
* @param ary
* @return
*/
private def average(ary:Array[Int]):BigDecimal={
val len = ary.length
val sum = ary.sum
(BigDecimal.valueOf(sum)./(BigDecimal.valueOf(len))).setScale(2,RoundingMode.UP)
} /**
* 多维数组
*/
def multipleArray(): Unit ={
//多维数组定义
val mary = new Array[Array[Int]](2)
mary(0)=Array(1,2,3,1,4)
mary(1)=Array(2,1,4)
for(ary<-mary){
println(ary.toBuffer)
} //定义 2行 3列 数组
val nary =Array.ofDim[Int](2,3)
nary(0)(0)=12
nary(0)(1)=13
nary(0)(2)=14 nary(1)(0)=22
nary(1)(1)=23
nary(1)(2)=24 println(nary.toBuffer) for(i<-0 until nary.length){
println(nary(i).toBuffer)
} }
}

  

scala 数组操作中使用了隐式转化.

更多资料参考:

scala 数组

scala 隐式转换

【scala】scala 数组 (三)的更多相关文章

  1. Scala学习——数组/映射/元组

    [<快学Scala>笔记] 数组 / 映射 / 元组 一.数组 1.定长数组 声明数组的两种形式: 声明指定长度的数组 val 数组名= new Array[类型](数组长度) 提供数组初 ...

  2. Scala学习2 ———— 三种方式完成HelloWorld程序

    三种方式完成HelloWorld程序 分别采用在REPL,命令行(scala脚本)和Eclipse下运行hello world. 一.Scala REPL. 按照第一篇在windows下安装好scal ...

  3. Scala系统学习(三):Scala基础语法

    如果您熟悉Java语言语法和编程,那么学习Scala将会很容易.Scala和Java之间最大的句法差异在于行结束字符的分号(;) 是可选的. 当编写Scala程序时,它可以被定义为通过调用彼此的方法进 ...

  4. hiho一下122周 后缀数组三·重复旋律

    后缀数组三·重复旋律3 时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi平时的一大兴趣爱好就是演奏钢琴.我们知道一个音乐旋律被表示为长度为 N 的数构成的数列.小Hi ...

  5. SDUT 3347 数据结构实验之数组三:快速转置

    数据结构实验之数组三:快速转置 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 转置运算是一 ...

  6. hihocoder #1415 : 后缀数组三·重复旋律3

    #1415 : 后缀数组三·重复旋律3 Time Limit:5000ms Case Time Limit:1000ms Memory Limit:256MB 描述 小Hi平时的一大兴趣爱好就是演奏钢 ...

  7. SDUT-3347_数据结构实验之数组三:快速转置

    数据结构实验之数组三:快速转置 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 转置运算是一种最简单的矩阵运算,对于一个 ...

  8. Java基础系列(36)- 数组三种初始化及内存分析

    内存分析 数组三种初始化 静态初始化 int[] a = {1,2,3}; Man[] mans = {new Man(1,1),new Man(2,2)} 动态初始化 int[] a = new i ...

  9. Scala从入门到放弃(三)Scala的数组、映射、元组和集合

    1.数组 1.1定长数组和变长数组 object ArrayDemo { def main(args: Array[String]): Unit = { //初始化一个长度为8的定长数组,其数组元素均 ...

随机推荐

  1. Spring WebSocket教程(一)

    学习背景 很久以前就知道WebSocket,但那时不论是浏览器还是开发技术对它的支持都还很少.但是,Spring4突然发布,让我眼前一亮,Spring4直接支持WebSocket. 对于Spring我 ...

  2. Android——shape和selector和layer-list的(详细说明 转)

    <shape>和<selector>在Android UI设计中经常用到.比如我们要自定义一个圆角Button,点击Button有些效果的变化,就要用到<shape> ...

  3. Redis初步认识

    官网:redis.io Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的 ...

  4. ashx session 赋值 获取

    ashx想获取session值 需要继承 IRequiresSessionState接口 ExcelHelper : IHttpHandler, IRequiresSessionState publi ...

  5. Linux下 ln 命令详解

    这是linux中一个非常重要命令,请大家一定要熟悉.它的功能是为某一个文件或目录在另外一个位置建立一个同步的链接,类似Windows下的超级链接. 这个命令最常用的参数是-s,具体用法是: sudo ...

  6. [spark 快速大数据分析读书笔记] 第一章 导论

    [序言] Spark 基于内存的基本类型 (primitive)为一些应用程序带来了 100 倍的性能提升.Spark 允许用户程序将数据加载到 集群内存中用于反复查询,非常适用于大数据和机器学习. ...

  7. vb 三种启动模式

    正常启动不用说了 就是虚拟机和显示部分在同一个程序里进行 直接关闭程序 就都关闭了 相当于我们普通的电脑, 有主机和显示器无界面启动 也很好理解 ,就是在后台启动虚拟机,如同服务器, 我们只有一个主机 ...

  8. 利用altium怎么生成PDF及怎么1:1打印文档

    画完板子之后,还要生成原理图PDF文档,供其他设计人员参考和指正. 上图红框标注的两个地方,分别用于打印预览设置和生成原理图PDF.那么若是生成原理图PDF文档,则选择smart PDF即可. 点击s ...

  9. 关于Unity中物理检测的准备

    1.要确定每个物体的碰撞类型,是有碰撞效果的碰撞还是没有碰撞效果的碰撞(is trigger),带不带刚体. 2.给每个物体分层,再设置哪些层会发生碰撞,哪些完全不产生碰撞. 3.给每个物体设置标记, ...

  10. VMware Fusion 5 正式版序列号

    HV4KJ-2X10K-VZ768-DRAGP-8CU2F MY63N-D0HE2-0ZXC1-HV954-937JL