美文网首页
Kotlin数组

Kotlin数组

作者: 竖起大拇指 | 来源:发表于2020-05-28 14:27 被阅读0次

kotlin为数组增加了一个Array类,为元素是基本类型的数组增加了XxxArray类。
kotlin自己提供了一套集合体系,增加了可变和不可变集合的概念。
kotlin的List代表有序,集合元素可重复的集合;Set代表无序,集合元素不可重复的集合;Map则采用key-value对的形式存储数据,每项数据都由key-value对组成。
Kotlin的数组使用Array<T>类代表,kotlin数组就是一个Array类的实例,所以kotlin数组也算是引用类型。

创建数组

kotlin创建数组就是创建Array<T>类的实例,kotlin即可允许通过Array<T>类的构造器来创建实例,也可以通过arrayOf()等工具函数来创建实例.

创建数组的两种方式
  • 使用arrayOf(),arrayOfNulls(),emptyArray()等工具函数
  • 使用Array(size:Int,init:(Int)->T)构造器
  //创建指定元素的数组(相当于Java数组的静态初始化)
        var arr1= arrayOf("java","kotlin","swift","go")
        var intArr1= arrayOf(2,4,500,-40)
        //创建指定长度,指定类型的空数组(相当于Java数组的动态初始化)
        var arr2= arrayOfNulls<Double>(5)
        var intArr2= arrayOfNulls<Int>(6)
        //创建长度为0的空数组
        var arr3= emptyArray<String>()
        var intArr3= emptyArray<Int>()
        //创建指定长度,使用表达式初始化数组元素
        var arr4=Array(5) { it*2
        }
        var strArr4=Array(6) {"hello"}

kotlin专门提供了ByteArray,ShortArray,IntArray,LongArray,CharArray,FloatArray,DoubleArray,BooleanArray,分别用于映射Java的byte[],short[],int[],long[],char[],float[],double[],boolean[]这8种基本类型的数组。

       var intArr= intArrayOf(2,40,30)
        var doubleArr= doubleArrayOf(2.3,3.5,-3.0)
        var intArr5=IntArray(3){
            it*it
        }
基本类型的元素不允许为null

使用数组

数组的常用方法就是访问数组元素,包括对数组元素进行赋值和取出数组元素的值。
访问数组元素是通过数组引用变量后紧跟一个方括号[]实现的,方括号里是数组元素的索引值。

kotlin语言的数组索引值是从0开始的
    //创建包含指定元素的数组
    var strArr = arrayOf("Kotlin", "Java", "Go", "Swift")
    //使用两种方式获取数组元素
    println(strArr[1])
    println(strArr.get(1))
    //使用两种方式修改数组元素
    strArr[1] = "Python"
    strArr.set(2, "Ruby")
    println(Arrays.toString(strArr))

3.使用for-in循环遍历数组

kotlin的for-in循环可自动遍历数组的每个元素

      var languages= arrayOf("java","python","swift")
            for(language in languages){
                println(language)
            }

使用for-in循环来遍历数组元素或集合元素时,不允许对循环变量进行赋值。

使用数组索引

kotlin的数组还提供了一个indices属性,该属性即可返回数组的索引区间。

var languages= arrayOf("java","python","swift")
            for(i in languages.indices){
                println(languages[i])
            }

还可以使用数组的withIndex()方法来同时访问数组的索引和元素,该方法返回一个Iterable对象,该对象的所有元素都是IndexedValue。

       var languages= arrayOf("java","python","swift")
          for((index,value) in languages.withIndex()){
                println("索引为${index}的元素是:${value}")
            }

数组常用的方法

          var arr= arrayOf(2,4,5,6)
            //判断所有元素的平方都大于20
            println(arr.all {it*it>20 })
            //判断是否任一元素的平方大于20
            println(arr.any { it*it>20 })
           //根据数组元素来计算<K,V>对,返回所有<K,V>对组成的Map集合
            //K是数组元素+10,V是数组元素的平方
            var result=arr.associate { it+10 to it*it }
            println("result为:${result}")
            //创建一个可变的map集合
            var map= mutableMapOf(1 to 200, 2 to 120, -1 to 130)
            //将计算出来的key,value对添加到map集合中
            arr.associateByTo(map,{it*it})
            println("map为${map}")
            //计算所有元素的总和
            println(arr.fold(0,{acc,e->acc+e}))

相关文章

网友评论

      本文标题:Kotlin数组

      本文链接:https://www.haomeiwen.com/subject/bgdoahtx.html