【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的定长数组,其数组元素均 ...
随机推荐
- IDEA快捷键整理(最详细的)
IDEA快捷键 Ctrl+Shift + Enter,语句完成“!”,否定完成,输入表达式时按 “!”键Ctrl+E,最近的文件Ctrl+Shift+E,最近更改的文件Shift+Click,可以关闭 ...
- jquery 回车事件实现代码
// 键盘事件 1.keydown() keydown事件会在键盘按下时触发. 2.keyup() keyup事件会在按键释放时触发,也就是你按下键盘起来后的事件 3.keypress() ke ...
- 解决华为手机图片选择无效及产生的open failed: EACCES (Permission denied)错误
在华为手机上调起图片选择时原来的效果如下 原来的代码是 Intent intent = new Intent(); intent.setAction(Intent.ACTION_GET_CONTENT ...
- 机器学习 demo分西瓜
周老师的书,对神经网络写了一个小的Demo 是最简单的神经网络,只有一层的隐藏层. 这次练习依旧是对西瓜的好坏进行预测. 主要分了以下几个步骤 1.数据预处理 对西瓜的不同特性进行数学编码表示(0~1 ...
- Python之collections.defaultdict
转自:http://www.jb51.net/article/88147.htm
- Aizu_Insertion Sort
原题链接:https://vjudge.net/problem/Aizu-ALDS1_1_A 题目描述 Write a program of the Insertion Sort algorithm ...
- SpringBoot系列九:SpringBoot服务整合(整合邮件服务、定时调度、Actuator监控)
声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念:SpringBoot 服务整合 2.背景 在进行项目开发的时候经常会遇见以下的几个问题:需要进行邮件发送.定时的任务调 ...
- Java如何显示所有正在运行的线程?
在Java编程中,如何显示所有正在运行的线程? 以下示例演示如何使用getName()方法显示所有正在运行的线程的名称. package com.yiibai; public class Displa ...
- 嵌入式开发之zynq驱动—— zynq ps pl ddr 内存地址空间映射
http://www.wiki.xilinx.com/Zynq-7000+AP+SoC+-+32+Bit+DDR+Access+with+ECC+Tech+Tip http://patchwork.o ...
- winfrom 使用NPOI导入导出Excel(xls/xlsx)数据到DataTable中
1.通过NUGET管理器下载nopi,在引入命令空间 using System; using System.Collections.Generic; using System.Text; using ...