package com.zy
import scala.collection.mutable
import scala.collection.mutable.ArrayBuffer object test3 {
def main(args: Array[String]): Unit = {
//function1() //function2() //function3() //function4() //function5() //function6() //function8() //function9() function10() } //数组
//不变长度数组(真数组)
def function1():Unit={
val ints=new Array[Int](20)
//赋值
ints(3)=999 for (i<- ints){
println(i)
} var arr=Array(1,"中国",9.9)
for (s<- arr){
println(s)
}
//取值 (下标)
println(arr(1)) }
def function2():Unit={
val arr=Array.fill(3)(math.random) for (s<- arr){
println(s)
}
} //变长数组
def function3():Unit={
val ab1=new ArrayBuffer[String]()
val ab2=ArrayBuffer[Int](100,200) //ab1.insert(4,"中国","日本")//Exception in thread "main" java.lang.IndexOutOfBoundsException: 4
ab1.insert(0,"中国","日本")
/*for (v<- ab1){
println(v)
}*/ ab1+=("美国","法国")//追加 符号更加简约
for (v<- ab1){
println(v)
} ab1++=Array("1","3","6")//追加任何集合
println("----------------------")
for (v<- ab1){
println(v)
} ab1.insert(1,"菲律宾")//在第一个元素后面
println("----------------------")
for (v<- ab1){
println(v)
} println("----------------------")
for (v<- ab1 if v!="日本"){
println(v)
} } def function4():Unit={
val arr=ArrayBuffer[Int](1,4,5,6,0)
val res=for (i<- 0 until arr.length) yield arr(i)*2
println(res) // _代表数组中每个元素
//arr.filter(_>0) 判断数组中大于0的元素,返回一个数组
//map(_*2) 每个元素乘于2
arr.filter(_>0).map(_*2).foreach(println(_)) } def function5():Unit={ var arr=Array(6,1,9,0,7)
println(arr.max)
println(arr.sum)
arr.sorted.foreach(println(_))//升序
println("-----------") // _>_ 两个元素比较,大的放前面 降序
arr.sortWith(_>_).foreach(println(_))
println("---------------")
arr.sortWith(_>_).foreach(println(_))//升序 println(arr.mkString("And"))//分隔符
println(arr.mkString("<",",",">"))//<6,1,9,0,7> //指定前缀、分隔符、后缀 } //多维数组
def function6():Unit={
var array=new Array[Array[Int]](5)
array(0)=Array(1,4,5)
array(1)=Array(2,4,5)
array(2)=Array(6,4,5)
for (a<-array if a!=null;v<-a){//双层循环
println(v)
} println("-------------------")
var arr2=Array(Array(1,2,3),Array(4,5,6),Array(7,8,9))
for (a<-arr2 ;v<-a){
println(v)
} } def function7():Unit={
val arr=Array(4,5,7) //把定长转变长
val buffer = arr.toBuffer
buffer.foreach(println(_)) //变长转定长
val ab2=ArrayBuffer[Int](100,200)
val array=ab2.toArray } //Map
def function8():Unit={
//不可变map(值不能改变)
var p=Map("aa"->12,"bb"->15,"cc"->28)
// ->是用来创建元组("aa",12) ("bb",15) ("cc",28)
//元组:("a",1.99,33,"b") 一组数据【任意类型】 println(p.get("aa"))//Some(12)
println(p.get("pppp"))//None //可变map(值可变)
val p2=scala.collection.mutable.Map("xx"->11,"yy"->22)
//空的可变map
val hashMap = new mutable.HashMap[String,Int] //取值
println(p2.get("pp"))
println(p2.getOrElse("xx",999))// 如果映射包含键“xx",返回对应的值;否则,返回999 //更新Map中的值
p2("xx")=100
println(p2.get("xx"))
//追加
p2+=("g"->1,"h"->2);
println(p2)
//移除
p2-=("xx")
println(p2) //不可变映射 也可以追加
p+=("zz"->999,"mm"->888)
println(p)
p-=("aa")
println(p) //遍历map
for ((k,v)<-p){
println("k:"+k+"\t"+"v:"+v)
} //遍历键的集合
for (k<- p.keySet) println("k:"+k) //遍历值的集合
for (v<- p.values) println("v:"+v) println("-------------------------")
//键
p.foreach(me=>println(me._1))
//值
p.foreach(me=>println(me._2))
//键值对
p.foreach(println(_)) println("--------------------------------")
//反转键值对
for ((k,v)<- p) yield println(v,k) var newMap=for ((k,v)<- p) yield(v,k)
println(newMap) } def function9():Unit={ // 会按照key的字典顺序进行排序
val mm= scala.collection.immutable.SortedSet("f"->9,"a"->3,"w"->8)//按照字典顺序排序
println(mm) val months = scala.collection.mutable.LinkedHashMap("January" -> 1,"February" -> 2,"March" -> 3) // 创建一个顺序的Map
months += ("Fourth" -> 4)
println("months=> " + months) // months=> Map(January -> 1, February -> 2, March -> 3, Fourth -> 4) } //元组
def function10():Unit={ val tup=(105,"中国")
//空格在拼接多个过程中会引起歧义
println(tup._1+"\t"+tup._2) //元组最大 Tuple22 Tuple3里面有3个元素
val tup2 = new Tuple3[String,Int,Int]("aa",11,44)
val (a,b,c)=tup2
println(a)
println(b)
println(c) //分组 按元素(_)是否是大写区分
println("NewAbcD".partition(_.isUpper))//分组后形成元组 //遍历
tup2.productIterator.foreach(println(_))//最简单方式,但是不让拼接"\t"
println()
tup2.productIterator.foreach(x=>println(x+"\t")) } }

Scala数据结构(数组,Map和Tuple)的更多相关文章

  1. Scala编程入门---Map与Tuple

    创建Map //创建一个不可变的Map val ages = Map("Leo" -> 30,"Jen" ->25,"Jack" ...

  2. Scala实战高手****第8课:零基础实战Scala最常用数据结构Map和Tuple及Spark源码鉴赏

    本课内容1.Map和Tuple在Spark源码中的鉴赏2.Map和Tuple代码操作实战 ------------------------------------------------------- ...

  3. Scala学习笔记之:tuple、array、Map

    [TOC] 本文<快学Scala>的笔记 tuple学习笔记 tuple的定义 对偶是元组(tuple)的最简单形态--元组是不同类型的值的聚集. 元组的值是通过将单个值包含在圆括号中构成 ...

  4. [Scala]Scala学习笔记三 Map与Tuple

    1. 构造映射 可以使用如下命令构造一个映射: scala> val scores = Map("Alice" -> 90, "Kim" -> ...

  5. Scala Map与Tuple

    创建Map // 创建一个不可变的Map val ages = Map("Leo" -> 30, "Jen" -> 25, "Jack&q ...

  6. scala 数据结构(六):映射 Map

    1 映射 Map-基本介绍 Scala中的Map介绍 1) Scala中的Map 和Java类似,也是一个散列表,它存储的内容也是键值对(key-value)映射,Scala中不可变的Map是有序的, ...

  7. 10. Scala数据结构(上)-集合操作

    10.1 数据结构特点 10.1.1 Scala集合基本介绍 uml => 统一建模语言 1) Scala同时支持不可变集合和可变集合,不可变集合可以安全的并发访问 两个主要的包 不可变集合:s ...

  8. 《快学Scala》——数组、映射和元组

    数组 定长数组:在Scala中可以用Array,初始化一个定长数组.例如: val nums = new Array[Int](10) //10个整数的数组,所有元素初始化为0 val a = new ...

  9. Scala数据结构

    Scala数据结构 主要的集合特质 Scala同时支持可变集合和不可变集合,优先采用不可变集合.集合主要分为三大类:序列(List),集(set),映射(map).所有的集合都扩展自Iterable特 ...

随机推荐

  1. 风炫安全WEB安全学习第二十五节课 利用XSS键盘记录

    风炫安全WEB安全学习第二十五节课 利用XSS键盘记录 XSS键盘记录 同源策略是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源.所以xyz.com下的js脚本采用a ...

  2. ocelot 中间件的变化

    ocelot 中间件的变化 Intro 之前我们使用 ocelot 的时候自定义了一些中间件来实现我们定制化的一些需求,最近博客园上有小伙伴问我怎么使用,他用的版本是 16.0 版本,16.0 和 1 ...

  3. DB2在渗透中的应用(转载)

    原文地址:http://drops.wooyun.org/tips/16673 0x00 DB2简介 DB2是IBM公司推出关系型数据库管理系统. 现今DB2主要包含以下三个系列: DB2 for L ...

  4. 如何将未呈现的WPF控件保存到图片

    SaveFileDialog save = new SaveFileDialog(); save.Filter = "BMP|*.bmp|PNG|*.png|JPG|*.jpg"; ...

  5. 关于使用jq跨域请求的实现

    今天算是把js跨域请求搞定了,想实现跨越,首先想到的是JSONP,但是具体去做的时候,发现有很多坑.在本地测试好之后又发现目标网站做了https证书认证,也就是实用的jsonp请求地址必须是https ...

  6. 【ORA】ORA-19602: cannot backup or copy active file in NOARCHIVELOG mode

    ORA-19602: cannot backup or copy active file in NOARCHIVELOG mode 这个问题是rman备份的时候,发现有问题 原因: 数据库没有开启归档 ...

  7. Netty中使用的设计模式

    创建型 简单工厂 public class DefaultThreadFactory implements ThreadFactory { @Override public Thread newThr ...

  8. CVE-2018-1273 Spring Data Commons 远程命令执行漏洞复现

    一.漏洞描述 Spring Data是一个用于简化数据库访问,并支持云服务的开源框架,Spring Data Commons是Spring Data下所有子项目共享的基础框架.Spring Data ...

  9. [Usaco2008 Feb]Line连线游戏

    题目描述 Farmer John最近发明了一个游戏,来考验自命不凡的贝茜.游戏开始的时 候,FJ会给贝茜一块画着N (2 <= N <= 200)个不重合的点的木板,其中第i个点 的横.纵 ...

  10. 阿里云RDS物理备份恢复到本地

    一:业务场景 验证阿里云备份文件可用性 二:恢复到本地过程中遇到的问题 1.修改密码报错 2.自定义函数不可用 三:恢复步骤 1.xtrabackup安装使用 请参考:https://www.cnbl ...