Kotlin(5):陣列Array
大多數語言都使用一下方式表示陣列的:
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中宣告二維陣列 varasc2d = 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)