从零学scala(二)数组相关操作、映射和元组

一:数组相关操作

1.定长数组
    val array = Array[String]("a","b","c") //直接初始化数组的内容
    println(array.mkString("|"))



    val array = new Array[String](2) //new一个长度为2的数据在通过更新的方法进行赋值
    array.update(0, "0")
    array.update(1, "1")
    println(array.mkString("|"))
2.变长数组:数组缓冲
    import scala.collection.mutable.ArrayBuffer
    val data = new ArrayBuffer[String]();
    data.-=("3"//单个元素删除操作
    data.-=("3","2"//单个元素删除操作
    data.+=("1"//单个元素添加操作
    data.+=("2","3","4"//多个元素添加操作
    data.++=(Array("5","6","7")) //可变数组操作不变数组
    data.++=(data//可变数组操作可变数组
    data.trimEnd(2//移除最后五个元素
    data.remove(2//第二位数组移除第二位元素
    data.remove(2,3//第二位开始移除三个元素
    val array = data.toArray[String] //转换成数组
3.遍历数组和数组缓冲
    val array = Array[String]("a","b","c","d"//转换成数组
    for(i <- array)              //遍历每个元素
            println(i)


    for(i <- 0 until array.length)    //遍历数组长度
            println(array.apply(i))
    for(i <- 0 until (array.length,2))    //每两个元素跳一下
            println(array.apply(i))



    val array = Array[String]("a","b","c","d","e","f","h")     
    for(i <- (0 until array.length).reverse )                       //反转,但是IDE提示的时候提示不到这个方法
            println(array.apply(i))
4.数组转换
    val array = Array[String]("a","b","c","d","e","f","h")
    val arrayB = for(i <- (0 until array.length).reverse ) yield array.apply(i) +“a”    //  数组对象yield之后产生数组对象,数组buffer对象yield之后产生数组buffer对象

    val array = Array[String]("a","b","c","d","e","f","h")
    val arrayB = array.map { x => x+"a" }.filter { x => x.equals("aa") }     //链式编程方法
5.常用方法
    val array = Array[Int](1,2,3,4).sum //求和
    val array1 = Array[Int](1,2,3,4).max //最大值
    val array2 = Array[Int](1,2,3,4)
    array2.sortWith((a,b)=>a > b).mkString("|") //排序
6.scaladoc
    val array2 = ArrayBuffer[Int](2,2,3,4)
    array2.append(6//添加新元素
    array2.appendAll(array2) //添加新数组
    array2.count( x => {if (x == 6true else false}) //计算满足个数的值
    array2.+=(7//添加新元素
    val max = array2.max //数组最大值
    println(array2.mkString("|"))
    val arrayBuffer = array2.padTo(151234//将数组转换为固定长度的数组,不够的话用第二个参数填充
    println(arrayBuffer.mkString("|"))
7.多维数组
    val array = Array.ofDim[String](2, 4) //两行四列
    array(1)(3) = "1234";
    println(array.mkString("|"))
8.与Java互操作
    import scala.collection.JavaConversions._ //想要把scala转换为java的方法使用这个
    //里面包含了大量将scala集合转换为java的类

二:映射和元组

1.构造映射
    val map = Map("aa"->4,"bb"->5,"cc"->6) //此方法生成一个定长的map集合
    val map1 = scala.collection.mutable.Map[String,Int]() //此方法生成一个变长的
2.map集合
    map1.+=(("dd",7))
    println(map1.mkString("|"))
3.获取映射中的值
    val map = Map("aa"->4,"bb"->5,"cc"->6//此方法生成一个定长的map集合
    println(map.getOrElse("dd""100")) //去拿dd的值,如果没有的话就返回100
4.更新映射中的值
    val map1 = scala.collection.mutable.HashMap("aa"->4,"bb"->5,"cc"->6//此方法生成一个定长的map集合
    map1.+=(("dd"->7)) //不可变map这个方法是返回新的map
    println(map1.mkString("|"))
    map1.-=("bb"//删除key
    println(map1.mkString("|"))
    map1.update("aa"100//不可变map没有这个方法
    println(map1.mkString("|"))
5.迭代映射
    val map1 = scala.collection.mutable.HashMap("aa"->4,"bb"->5,"cc"->6)
    for((key,value)<-map1){
            println(key +"|" + value)
    }
    println()
    for(key<-map1.keySet){
            println(map1.apply(key))
    }
    println()
    for((key,value)<-map1) yield(value,key) //反转map结构,key,value相互转换
6.已排序映射
    //生成不可变的的排序的map,如果必须要可变的话,建议用treemap
    val map1 = scala.collection.immutable.SortedMap("mm"->4,"aa"->5,"cc"->6)
    for((key,value)<-map1){
            println(key +"|" + value)
    }
    println()
    //生成可变的有顺序的map
    val map2 = scala.collection.mutable.LinkedHashMap("mm"->4,"aa"->5,"cc"->6)
    for((key,value)<-map2){
            println(key +"|" + value)
    }
7.与Java互操作
    //将一而终类型的变量转换为另一种类型的变量,这就是JavaConversions魅力
    //下面的例子就是将Properties转换为Map类型
    import scala.collection.JavaConversions.propertiesAsScalaMap
    val map:scala.collection.Map[String,String] = System.getProperties
    println(map.toString())

    //可用的还有
    import scala.collection.JavaConversions.mapAsScalaMap
    import scala.collection.JavaConversions.mapAsScalaConcurrentMap
8.元组
    //元组每个元素都可以是不同的类型
    val tt = ("aa",11,2.0f,5l)
    println(tt._1) //可以用_1,_2,_3,_4访问
9.拉链
    val aa = Array(1,2,3,4)
    val bb = Array(5,6,7,8)
    val cc = aa.zip(bb)//拉链操作
    println(cc.mkString("|"))
posted @ 2019-11-09 18:43  Kotlin  阅读(242)  评论(0编辑  收藏  举报
Live2D