【scala】scala 数组 (三)
基础内容
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.定长数组 声明数组的两种形式: 声明指定长度的数组 val 数组名= new Array[类型](数组长度) 提供数组初 ...
- Scala学习2 ———— 三种方式完成HelloWorld程序
三种方式完成HelloWorld程序 分别采用在REPL,命令行(scala脚本)和Eclipse下运行hello world. 一.Scala REPL. 按照第一篇在windows下安装好scal ...
- Scala系统学习(三):Scala基础语法
如果您熟悉Java语言语法和编程,那么学习Scala将会很容易.Scala和Java之间最大的句法差异在于行结束字符的分号(;) 是可选的. 当编写Scala程序时,它可以被定义为通过调用彼此的方法进 ...
- hiho一下122周 后缀数组三·重复旋律
后缀数组三·重复旋律3 时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi平时的一大兴趣爱好就是演奏钢琴.我们知道一个音乐旋律被表示为长度为 N 的数构成的数列.小Hi ...
- SDUT 3347 数据结构实验之数组三:快速转置
数据结构实验之数组三:快速转置 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 转置运算是一 ...
- hihocoder #1415 : 后缀数组三·重复旋律3
#1415 : 后缀数组三·重复旋律3 Time Limit:5000ms Case Time Limit:1000ms Memory Limit:256MB 描述 小Hi平时的一大兴趣爱好就是演奏钢 ...
- SDUT-3347_数据结构实验之数组三:快速转置
数据结构实验之数组三:快速转置 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 转置运算是一种最简单的矩阵运算,对于一个 ...
- Java基础系列(36)- 数组三种初始化及内存分析
内存分析 数组三种初始化 静态初始化 int[] a = {1,2,3}; Man[] mans = {new Man(1,1),new Man(2,2)} 动态初始化 int[] a = new i ...
- Scala从入门到放弃(三)Scala的数组、映射、元组和集合
1.数组 1.1定长数组和变长数组 object ArrayDemo { def main(args: Array[String]): Unit = { //初始化一个长度为8的定长数组,其数组元素均 ...
随机推荐
- backlight 子系统(转载)
http://blog.csdn.net/weiqing1981127/article/details/8511676 Linux下的Backlight子系统(一) http://blog.csd ...
- Android ——Toolbar开发实践总结(转)
过年前发了一篇介绍 Translucent System Bar 特性的文章 Translucent System Bar 的最佳实践 ,收到很多开发者的关注和反馈.今天开始写第二篇,全面的介绍一下 ...
- docker原理
Docker原理11 Linux Namespace 11 AUFS文件系统17 重新理解Docker的各种命令18 Docker原理 Linux Namespace docker是一个容器引擎,容器 ...
- 【转】一篇文章读懂人力资源三支柱体系(COE・BP・SSC)
通过人力资源转型,提升效率和效能 作者:Sharon Li,翰威特大中华区咨询总监. 杰克韦尔奇曾说过“人力资源负责人在任何企业中都应该是第二号人物”,但在中国,99%的企业都做不到.原因很简单, ...
- 【进阶修炼】——改善C#程序质量(2)
16, 元素可变的情况下应避免用数组. 数组是定长的集合,可以考虑用ArrayList或List<T>集合.ArrayList元素是object类型,有装箱的开销,性能较低.另外Array ...
- 【嵌入式】——arm裸机开发 step by step 之 串口通信
一.在使用S5PV210的串口发送和接收的时候,首先要对S5PV210的串口进行配置,我们使用轮询方式时的配置有哪些? 1.配置GPIO,使对应管脚作为串口的发送和接收管脚 GPA0 0 1 管脚 2 ...
- 根据map键值对,生成update与select语句,单条执行语句
方法 constructUpdateSQL private static String constructUpdateSQL(String tableName, List<Map<Stri ...
- Scrapy安装错误:Microsoft Visual C++ 14.0 is required
问题描述 当前环境win10,python_3.6.1,64位. 在windows下,在dos中运行pip install Scrapy报错: building 'twisted.test.raise ...
- OC与AS3的观察者模式比较以及外部回调
一.要点 1.AS3的观察者模式,主要是体现在在哪个组件上监听,那么就在这个组件上分发事件,并且可以直接传递Function. 2.OC的观察者模式,主要是需要你指定观察的对象,和观察的对象方法sel ...
- Sword STL容器分类介绍
标准STL序列容器:vector.string.deque和list. 标准STL关联容器:set.multiset.map和multimap. 非标准序列容器slist和rope.slist是一个单 ...