语言学习——kotlin

Kotlin——数组

2023-09-23  本文已影响0人  So_ProbuING

Kotlin为数组增加了一个Array类,为基本元素类型增加了XxxArray类(Xxx可以是Byte、Short、Int等基本类型)
Kotlin抛弃了Java集合体系中的Queue集合,增加了可变集合和不可变集合
Kotlin的集合体系由三种集合组成

数组

Kotlin的数组使用Array<T>类代表,Kotlin的数组就是一个Array类的实例,因此Kotlin数组当然也算引用类型

创建数组

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

//创建一个包含字符串的数组 相当于java的数组静态初始化
    var arr1 = arrayOf("Java","Kotlin","C++")
    //int 数组
    var intArr = arrayOf(1,2,3,4,5)
    //创建指定长度,元素为null的数组 相当于java的动态初始化
    var arr2 = arrayOfNulls<Double>(5)
    var intArr2 = arrayOfNulls<Int>(2)
    //创建长度为0的空数组
    var arr3 = emptyArray<String>()
    var arr4 = emptyArray<Long>()
    //创建指定长度,使用lambda表达式初始化数组元素
    var arr5 = Array(5,{(it*2+97).toChar()})
    var strArr2 = Array(2,{"abc"})

由于Array<T>类要求它的元素必须是引用类型,所以,如果程序将基本类型的值存入Array<T>中,Kotlin会将这些基本类型的值自动装箱成包装类的实例,然后再讲这些实例添加到Array<T>数组中,为此Kotlin专门提供了ByteArray、ShortArray、IntArray、LongArray、CharArray、FloatArray、DoubleArray、BooleanArray

使用数组

访问数组元素 就是在数组引用变量后面跟一个方括号实现的。方括号里是数组元素的索引值。

  var strArr = arrayOf("java","kotlin","Swift")
    //访问数组第一个元素
    println(strArr[0])
    println(strArr.get(0))
    //修改数组第二个元素
    strArr[1]="Ruby"
    strArr.set(1,"ruby1")
    println(Arrays.toString(strArr))

所有的数组都提供了一个size属性,通过这个属性可以访问到数组的长度,一旦获得了数组的长度,就可以通过循环来遍历该数组的每个数组元素

var booksArr = arrayOfNulls<String>(5)
    booksArr[0] = "《疯狂Kotlin讲义》"
    booksArr[1] = "《疯狂Android讲义》"
    //循环输出books数组的每个值
    for (i in 0 until booksArr.size) {
        println(booksArr[i])
    }

使用for-in循环遍历数组

 var booksArr = arrayOfNulls<String>(5)
    booksArr[0] = "《疯狂Kotlin讲义》"
    booksArr[1] = "《疯狂Android讲义》"
    //for in循环遍历数组
    for (book in booksArr) {
        println(book)
    }

使用数组索引

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

 val testArr = arrayOf("abc","bcd","def","efg")
    for (i in testArr.indices) {
        println(testArr[i])
    }

还可以使用in、!in来检查某个索引是否位于数组的索引区间内

  //创建随机数
    val i = Random().nextInt(10)
    println(i in testArr.indices)

Kotlin还为数组提供了一个lastIndex属性,该属性用于返回数组最后一个元素的索引值,该索引值通常等于size-1

 println(testArr.lastIndex)
    println(testArr.size - 1 == testArr.lastIndex)

如果程序需要同时访问数组的索引和元素,也可使用数组的withIndex(),该方法返回一个Iterable对象。该对象的所有元素都是IndexedValue

 val testArr = arrayOf("abc","bcd","def","efg")
    //withIndex()
    for((index,value) in testArr.withIndex()){
        println("索引为${index}值为${value}")
    }

数组的常用方法

Kotlin为数组提供的方法大致相当于Java的Arrays工具类提供的操作数组的方法

 //定义一个数组
    val intArr = arrayOf(1,2,3,4)
    //判断数组中所有元素的平方是否大于20
    println(intArr.all { it * it > 10 })//false
    //判断数组中任意元素的平方是否大于20
    println(intArr.any { it * it > 10 })//true
    //返回key+2 value平方的map集合
    val result = intArr.associate { it + 2 to it * it }
    println(result)

    //定义一个相同的数组
    val intArr2 = arrayOf(1,2,3,4)
    //判断数组是否相等
    println("intArr intArr2是否相等${intArr.contentEquals(intArr2)}")
    //复制intArr2
    val intArr2Copy = intArr2.copyOf(4)
    //输出string intArr2Copy
    println(intArr2Copy.contentToString())
    //将intArr2Copy第5个到第7个元素替换为1
    intArr2Copy.fill(0,1,3)
    println("输出intArr2Copy${intArr2Copy.contentToString()}")
    //对intArr2进行排序
    intArr2.sort()
    println(intArr2.contentToString())
上一篇下一篇

猜你喜欢

热点阅读