val list=List(1,2,3,4,4)
//獲取下標是1的
val res=list(1)
println(res)
//往list集合中填充数据 List(1,2)
val lis = List.range(1,3) //不包括3
for(o <- lis){
print(" "+o)
}
//ListBuffer是可變list,只有可變的list才能添加修改list中的元素
val listb=ListBuffer(1,2,9,4)
//添加数据
listb.+=(5)
listb+=(6)
listb.append(7)
listb.insert(0,0)
println(listb)
//删除数据 删除下标是0的
listb.remove(0)
println(listb)
//删除指定下标的数据,然后从这个下标开始往后删除2个数据
//ll.remove(1,2)
//取出3,4 slice(滑动切割)是前开后闭
val res2 = listb.slice(2,4)
println(res2)
//取出3,4然后再放到ListBuffer中 ??
//让listb中的元素跟下标有关联
val res3 = listb.zipWithIndex
println(res3)
//让两个list进行关联 展示的数据量的多少跟要被关联的那个list集合长度有关
val lista=ListBuffer(1,2,3)
val res4 = listb.zip(lista)
println("************"+res4)
println("--------第一个max之前的数求和----------")
val list10=List(1,2,3,4,5,6,7,"max",8,9,0,"max",1,2,3)
val indexl = list10.indexOf("max")
val inde = list10.slice(0,indexl)
val indesum = inde.map(x=>x.toString.toInt).reduce(_+_)
println(indesum)
println("--------最后一个max之后的数求和----------")
val last = list10.lastIndexOf("max")
val s = list10.slice(last+1,list10.length)
val lastsum=s.map(x=>x.toString.toInt).reduce(_+_)
println(lastsum)
Map 集合
val map1=Map("xss"->24,("gj",20))
//仅獲取map中的所有鍵
val key = map1.keys
//仅獲取map中的所有值
val valu = map1.values
println(valu)
//把徐磊的年齡取出來 some()表示當前鍵有值 None 表示沒值
val xage=map1.get("xs") //获取map中指定键的值 有som() 和None
val sage=map1("xss") //获取map中指定键的值
println("获取map中的值"+sage)
//******* 普通map不能添加數據,只有hashmap才能添加數據
val map2=mutable.HashMap("xss"->30,"gj"->20)
//1、添加數據 .+= += 都能添加數據和更新數據
map2.+=("hx"->18)
map2+=("vvvv"->88)
//2、添加數據 put的时候只能逗号隔开 必能用箭头 ->
map2.put("wlg",18)
println(map2)
//1、删除数据
map2.remove("wlg")
//2、删除数据
map2.-=("hx")
println("没有or之前的"+map2)
//查看是否有hx这个键,有的话获取他的值,没有的话就把18赋值给当前键
val res = map2.getOrElse("hx",18)
val res2 = map2.getOrElse("xss",0)
println("or之后的"+map2)
//更新map中的数据
map2("xss")=99
//更新多个key
map2.+=(("xss",20),("gj",28))
map2+=("xss"->10,"gj"->0)
println(map2)
//遍历map集合的三种方法
//一、先获取所有的key然后再从map2中取出key对应的值
for(key<-map2.keys){
println(key+"->"+map2(key))
}
//二、模式匹配 直接用k 和 v 代替map2中的key和value
for((k,v)<-map2){
println(k+"-->"+v)
}
//三、foreach 和 case foreach外面必须是大括号
map2.foreach{case (k,v)=>println(k+"--->"+v)}
//---------------------匹配關係
//字符串匹配
val arr=Array("chang","shi","max","cao","cheng","jack")
//在arr中隨機取出一個數
val name=arr(Random.nextInt(arr.length))
name match {
case "change"=>println("change")
case "shi"=>println("shi")
case _=>println("其他")
}
//類型匹配
val arr2=Array("jack",3.14,5.666666f,10,true)
val name2=arr2(Random.nextInt(arr2.length)) //nextInt 前开后闭
name2 match {
case a:String=>println(a+"是string類型")
case a:Int=>println(a+"是int類型")
case a:Double=>println(a+"是double類型")
case _=>println("其他")
}
//list匹配 每個元素之間是以 :: 隔開的 s"$a,$b" 後面是引號
// val list=0::2::Nil //將0和2裝進空的list集合中
// println(list)
val list=List(1,2,8)
list match {
case 0::Nil=>println("集合中只有一個0")
case 1::tail=>println("以1開頭的")
case a::b::8::Nil=>println(s"$a,$b",8)//集合中有三個元素并且最後一個元素是8
}
//數組的匹配 其他是用 _* 不是直接用 * 表示
val arr3=Array(8,0)
arr3 match {
case Array(0)=>println("數組中只有一個0")
case Array(a,0)=>println(s"$a",0)
case Array(0,_*)=>println("0還有其他")
}
//元組的匹配
val tup=(5,8,0)
tup match {
case (5,a,b)=>println(5,s"$a,$b")
case (5,5,5)=>println("全部是5")
case _=>println("其他")
}
其他知识点
val bb = ArrayBuffer[Int]()
bb += (1,2,3,4,5);
bb.trimEnd(4) // b 等于 ArrayBuffer(1,2)
println(bb.toBuffer)
//***isUpper提取除大写字母,最后将大写字母和小写字母用逗号隔开分别显示
val l = "New York".partition(_.isUpper)
println(l) //(NY,ew ork)
val a = Array[Int](0, 0)
val b = Array[Int](1, 1)
println(a.toBuffer)
println(b.toBuffer)
//**crazy"*3 就会出现三次拼接在一块
val x = "crazy"*3
println(x)
//**获取首字母和尾字母
val t="Hello word".take(1) //从头开始获取几个单词 1就是1个单词,2就是从头获取两个单词
val w="Hello word".reverse(0)
println(t)
println(w)
//-----------------------------------数组
//创建数组的不同方式
//new Array[Int](3) 小括号里面放的是长度
//ArrayBuffer[String]("3") 小括号里面放的是对应类型的数
//Array(4,9,"ss") 直接放数组中
//**定义数组 [类型] 和 (长度)
//第一种方式 new 数组并指定长度
val arra=new Array[Int](3) //怎么往数组中添加数据 ??
// 第二种方式 可以在定义的时候放入数据/后期通过+=的方式进行存入数据
//直接定义ArrayBuffer数组的[类型] 小括号后面放数据 **创建的时候必须放数据,不然运行报错
// 或者先定义,然后通过+=的方式将数据加进数组 val bb = ArrayBuffer[Int]()
// bb += (1,2,3,4,5);
val arrb=ArrayBuffer[String]()
arrb+=("33")
println(arra.toBuffer)
println("通过后期+=的方式进行数组的添加"+arrb.toBuffer)
//第三种方式 不同数组在定义时就放到数组中
val arr=Array(4,9)
//求出数组中的最大值
println(arr.max)
//对数组中的数进行排序 倒序
val arrsort1 = arr.sorted.reverse
println(arrsort1.toBuffer)
//x相当于arr中的每一个数字
val arrsort2 = arr.sortBy(x=>x).reverse
println(arrsort2.toBuffer)
//**3表示有三个array 4表示每个array中有四个元素
//(ArrayBuffer(0, 0, 0, 0),ArrayBuffer(0, 0, 0, 0),ArrayBuffer(0, 0, 0, 0))
val s=Array.ofDim[Int](3,4)
println(s(0).toBuffer,s(1).toBuffer,s(2).toBuffer)
//**通过+=的方式往数组中添加进数据
val bbb = ArrayBuffer[Int]()
bbb += (1,2,3,4,5);
println("bbb"+bbb.toBuffer)
//**数组乘以Int
val af = Array(1,2,3)
val bf = af.map(_*2)
println(bf.toBuffer)
//**输出n到0的数字(倒序输出)
def countdown(n:Int){(0 to n).reverse foreach print}
countdown(3)
//输出n到0的数字(正序输出)
def vv(n:Int)={(0 to n) foreach print}
vv(3)
//在每个单词之间加上符号ArrayBuffer(o, n, e, -, t, w, o, -, t, h, r, e, e)
val pp = Array("one","two","three").mkString("-")
println(pp.toBuffer)
//ArrayBuffer(t, w, o)
val ooo = Array("one","two","three").max
println(ooo.toBuffer)