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. ocelot 中间件的变化

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

  2. java的重载与重写

    原文链接http://zhhll.icu/2020/11/11/java%E5%9F%BA%E7%A1%80/%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1/%E9%87%8 ...

  3. 【MyBatis】MyBatis CRUD

    MyBtis CRUD 文章源码 基于代理 DAO 的 CRUD 根据 ID 查询操作 在持久层接口中添加 findById 方法: public interface UserDAO { /** * ...

  4. dubbo配置启动时检查

    启动检查设置 Dubbo缺省会在启动时检查依赖的服务是否可用,不可用会抛出异常,阻止Spring初始化完成,默认check="true":是开启检查. 比如测试的时候,有些服务并不 ...

  5. python学习笔记 | PyCharm出现卡顿解决方法

    问题:使用pycharm时常出现 the IDE is running low on memory 的问题 表示pycharm这款IDE使用内存不足 需要在系统内存充足的情况下扩充IDE memory ...

  6. MySQL select 查询之分组和过滤

    SELECT 语法 SELECT [ALL | DISTINCT] {* | table.* | [table.field1[as alias1][,table.field2[as alias2]][ ...

  7. 【EXPDP/IMPDP】数据泵导入导出遇到目录没有权限问题

    当执行数据泵导出的时候,报了如下错误: ORA-39002: invalid operation ORA-39070: Unable to open the log file. ORA-39087: ...

  8. kubernets之statefulset资源

    一  了解Statefulset 1.1  对比statefulset与RS以及RC的区别以及相同点 Statefulset是有状态的,而RC以及RS等是没有状态的 Statefulset是有序的,拥 ...

  9. postgresql-12编译安装

    1 准备环境 修改yum源 mkdir -p /etc/yum.bak mv /etc/yum.repos.d/* /etc/yum.bak/ &&\ curl -o /etc/yum ...

  10. CSSmargin击穿问题(子元素margin-top会影响父元素)

    最近写一个H5页面的时候发现了这个被忽视的问题,一时没想到什么原因,搜了半天,记录一下,方便他人踩坑.唉,有些东西不用就忘. 一.问题描述 <div class="container& ...