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")) } }

最新文章

  1. PHP 通过百度API 实现通过城市名称获取经度
  2. Codeforces Round #327 (Div. 2) B. Rebranding C. Median Smoothing
  3. Bash:-:-获取未来40天的日期
  4. CDN 技术详解(DNS,GSLB,Cache)
  5. finder文件目录跳转快捷键
  6. UESTC 288 青蛙的约会 扩展GCD
  7. Date and Time Pattern
  8. Python学习总结8:文件模式及操作方法汇总
  9. DOM中元素节点、属性节点、文本节点的理解
  10. GIT之一 起步篇
  11. selenium python (十一)alert/confirm/prompt的处理(js中的弹出框)
  12. 第二个App“今日美文”上架【原】
  13. Zeppelin使用报错
  14. 任务十二:学习CSS 3的新特性
  15. java集合框架详解
  16. PhysicsJoint
  17. 高数量类别特征(high-cardinality categorical attributes)的预处理方法
  18. javascript之判断专题
  19. day 47 htm-part2
  20. 如何使用HttpClient包实现JAVA发起HTTP请求?

热门文章

  1. Appium 介绍及环境安装
  2. ORACLE的还原表空间UNDO写满磁盘空间,解决该问题的具体步骤
  3. 记一次flask上传文件返回200前端却504的问题
  4. 服务器报错&quot;您的主机中的软件中止了一个已建立的连接&quot;
  5. 细说 js 的7种继承方式
  6. 【Azure Developer】使用Postman获取Azure AD中注册应用程序的授权Token,及为Azure REST API设置Authorization
  7. 【C++】《Effective C++》第九章
  8. LeetCode701 二叉搜索树中插入结点
  9. Centos7 Nginx+PHP7 配置
  10. .NET Core学习笔记(9)——Entity Framework Core之Code First