Kotlin基础篇(5):数组Array

作者: 涅小黑 | 来源:发表于2018-11-23 00:11 被阅读2次

大多数语言都使用一下方式表示数组的:
int[] arr = {1,2,3,4,5}
而在Kotlin中却是用一个专门的类型来表示数组的:Array

public class Array<T> {
    public inline constructor(size: Int, init: (Int) -> T)
    public operator fun get(index: Int): T
    public operator fun set(index: Int, value: T): Unit
    public val size: Int
    public operator fun iterator(): Iterator<T>
}

数组声明

var asc = Array(3,{it ->0})

定义了一个包含3个元素的数组,并且每个元素的值为0.Kotlin会自动推断数组的类型,也可以显式标记数组的类型:
var asc:Array<Int> = Array(3,{it ->0})

数组的读写

var asc = Array(3,{it ->0})

//写
asc[0] =  1 / asc.set(0,1)
asc[1] =  4
asc[2] =  8

//读
for(i in asc.indices){
  println("asc[$i] = ${asc.get(i)}")
}

声明引用型数组

var asc = Array<Animal?>(3,{it ->null})//声明了包含3个元素的Animal类型的数组

还有另外一种方式可以声明并赋值为null的方式:

var asc  = arrayOfNulls<Animal>(3)  //asc的类型为Array<Animal?>

多维数组

相对比其他语言的多维数组声明而言,Kotlin的还是比较复杂的

//java中声明二维数组
int[][] a =  new int[3][4]

//Kotlin中声明二维数组
var  asc2d = Array(3,{Array(3,{it -> 0}))

asc[0][0]  = 1

Kotlin中的数组与Java中的数组转换

使用引用型数组的时候,Kotlin和Java的对应关系为:
Array<Animal> <===> Animal[]
Array<Int> <===> Integer[]
但是对于Java基本类型,Kotlin却不能使用Array<Int>对应int[],Kotlin定义的其他的类与之对应:

Kotlin Java
ByteArray byte[]
CharArray char[]
ShortArray short[]
IntArray int[]
LongArray long[]
FloatArray float[]
DoubleArray double[]
BooleanArray boolean[]

数组与列表转换

//数组转换为列表
var asc  = arrayOfNulls<Animal>(3) 
asc.asList //ArrayList<Animal>

//列表转换为数组
var list= ArrayList<Animal>()
list.add(Animal("dog"))
list.add(Animal("cat"))

var asc2  = arrayOfNulls<Animal>(list.size) 
list.toArray(asc2)

相关文章

网友评论

    本文标题:Kotlin基础篇(5):数组Array

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