Scala数据结构(数组,Map和Tuple)
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)的更多相关文章
- Scala编程入门---Map与Tuple
创建Map //创建一个不可变的Map val ages = Map("Leo" -> 30,"Jen" ->25,"Jack" ...
- Scala实战高手****第8课:零基础实战Scala最常用数据结构Map和Tuple及Spark源码鉴赏
本课内容1.Map和Tuple在Spark源码中的鉴赏2.Map和Tuple代码操作实战 ------------------------------------------------------- ...
- Scala学习笔记之:tuple、array、Map
[TOC] 本文<快学Scala>的笔记 tuple学习笔记 tuple的定义 对偶是元组(tuple)的最简单形态--元组是不同类型的值的聚集. 元组的值是通过将单个值包含在圆括号中构成 ...
- [Scala]Scala学习笔记三 Map与Tuple
1. 构造映射 可以使用如下命令构造一个映射: scala> val scores = Map("Alice" -> 90, "Kim" -> ...
- Scala Map与Tuple
创建Map // 创建一个不可变的Map val ages = Map("Leo" -> 30, "Jen" -> 25, "Jack&q ...
- scala 数据结构(六):映射 Map
1 映射 Map-基本介绍 Scala中的Map介绍 1) Scala中的Map 和Java类似,也是一个散列表,它存储的内容也是键值对(key-value)映射,Scala中不可变的Map是有序的, ...
- 10. Scala数据结构(上)-集合操作
10.1 数据结构特点 10.1.1 Scala集合基本介绍 uml => 统一建模语言 1) Scala同时支持不可变集合和可变集合,不可变集合可以安全的并发访问 两个主要的包 不可变集合:s ...
- 《快学Scala》——数组、映射和元组
数组 定长数组:在Scala中可以用Array,初始化一个定长数组.例如: val nums = new Array[Int](10) //10个整数的数组,所有元素初始化为0 val a = new ...
- Scala数据结构
Scala数据结构 主要的集合特质 Scala同时支持可变集合和不可变集合,优先采用不可变集合.集合主要分为三大类:序列(List),集(set),映射(map).所有的集合都扩展自Iterable特 ...
随机推荐
- 【Java基础】基本语法-变量与运算符
基本语法-变量与运算符 关键字和保留字 关键字定义:被 Java 语言赋予了特殊含义,用做专门用途的字符串(单词). 关键字特点:关键字中所有字母都为小写. 用于定义数据类型:class.interf ...
- 【Flutter】容器类组件之填充
前言 Padding可以给其子节点添加填充(留白). 接口描述 class EdgeInsets extends EdgeInsetsGeometry { // 分别指定四个方向的填充 const E ...
- version can neither be null, empty nor blank
在用mybatis-generator逆向生成mapper和DAO的时候,出现了这个错误. mybatis-generator:generate 原因是在pom.xml中我的mysql依赖没有写版本号 ...
- leetcode-222完全二叉树的节点个数
题目 给出一个完全二叉树,求出该树的节点个数. 说明: 完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置. ...
- Head First 设计模式 —— 12. 状态 (State) 模式
思考题 public class GumballMachine { final static int SOLD_OUT = 0; final static int NO_QUARTER = 1; fi ...
- LeetCode993. 二叉树的堂兄弟节点
题目 1 class Solution { 2 public: 3 TreeNode* r1;TreeNode* r2; 4 bool isCousins(TreeNode* root, int x, ...
- 查询数据库v$session时报部分多维元组字元
在查询v$session视图时,出现如下图报错,基本原因是用plsql dev时使用汉字打开新标签,导致v$session action栏位出现乱码 解决方法: select SID,SERIAL#, ...
- Nacos集成学习入门
微服务注册中心nacos学习:先尝试使用它,然后撸它源码搞懂它. 在这里整理一下自己之前集成nacos的内容. 我的github地址:https://github.com/mrxiaobai-wen/ ...
- ABAP中SQL语句,指定索引(oracle)
①常用的两种方法: 1.指定使用全表扫描:%_HINTS ORACLE 'FULL(table_name)' 表示扫描整个表 2.指定索引:%_HINTS ORACLE 'INDEX("ta ...
- yml文件中${DB_HOST:localhost}的含义
引自:https://blog.csdn.net/chen462488588/article/details/109057342 今天学习eladmin项目中看到application-dev.yml ...