创建数组

val 声明的数组只能改变元素

var 声明的数组可以改变引用

创建方式举例

Array ()

通用数组

Array(size: Int, init: (Int) -> T)

val array: Array<Int> = Array(5) { i -> i * 2 }

5是数组长度,i是索引值,元素赋值为索引值*2

原生数组

IntArray (长度)

***Array (长度)

val ys1 = IntArray(5)        //元素都是0

val ys2 = BooleanArray(5)        //元素都是false

val ys3 = CharArray(5)        //元素都是空格

arrayOfXXX ()
指定元素(元素可为任意类型)

arrayOf ()

val array1: Array<Any> = arrayOf(1, '你', "hahaah", false)

for (element: Any in array1) print(element)

val array2: Array<Int> = arrayOf(1, 2, 3)

val array3: Array<Person> = arrayOf(person1, person2)

指定长度(元素都为null)

arrayOfNulls ()
val arrayNull: Array<String> = arrayOfNulls<String>(6)

空数组

emptyArray ()
val empty: Array<String> = emptyArray<String>()

原生数组(避免拆装箱开销)

intArrayOf ()

***ArrayOf ()

val array3: IntArray = intArrayOf(1, 3, 5, 7)

val array4: CharArray = charArrayOf('a', 'b', 'c')

原生数组 & 通用数组

为了避免不必要的拆装箱开销,或者与Java互操作,可以使用原生类型数组。这些类与Array没有继承关系,只是有相同的方法属性,因此 IntArray 和
Array<Int> 是完全不同的类型,但两者可以互转。

原生类型数组对应Java中的基本数据类型数组

IntArray

***Array

int [ ]

*** [ ]

方法说明举例

toIntArray ()

to***Array ()
通用→原生
val ty: Array<Int> = arrayOf(1, 2, 3)

val toIntArray: IntArray = ty.toIntArray()

toTypedArray ()原生→通用
val ys: IntArray = intArrayOf(1, 2, 3)

val toTypedArray: Array<Int> = ys.toTypedArray()
Person[] people = {new Person(), new Person()}; //Java val people:
Array<Person> = arrayOf(Person(), Person()) //Kotlin
 遍历
val arr = arrayOf(1,2,3,4,5) //通过forEach循环 arr.forEach{ println(it) }
//通过iterator循环 var iterable:Iterator<Integer> = arr.iterator();
while(iterable.hasNext()){ println(iterable.next()) } for(element in
arr.iterator()){ println(element) } //for循环一 for(element in arr){
println(element) } //for循环二 for(index in 0..arr.size-1){ println(arr[index]) }
//for循环三 for(index in arr.indices){ println(arr[index]) } //for循环四 for((index,
value) in arr.withIndex()){ println("$index位置的元素是:$value") } // 上面写法等价于下面写法 for
(element in arr.withIndex()) { println("${element.index} : ${element.value}") }
操作

方法说明

.size

.indices

数组长度

数组最大索引值

get (索引)
获取元素,推荐使用操作符 [ ]

arr[3]   等同于   arr.get(3)

set (索引,目标值)
给元素赋值,推荐使用操作符 [ ]

arr[3] = "哈"   等同于   arr.set(3,"哈")

plus (目标值)
增加:返回一个数组长度+1并用目标值赋值新元素的新数组,不对原数组进行改动

arr + 6  等同于  arr.plus(6)

slice (区间)截取:返回一个截取该区间元素的新数组,不对原数组进行改动

fill (目标值)

fill (目标值,起始索引,结束索引)
修改:将该区间的元素赋值为指定值

copyOf ()

copyOf (个数)

copyOfRange (起始索引,结束索引)

返回一个 完全复制了原数组 的新数组

返回一个 正向复制原数组元素个数 的新数组,超过原数组大小的新元素值为null

返回一个 复制原数组该区间元素 的新数组,超过原数组索引范围报错

asList ()数组转集合

reverse ()

reversedArray ()

reversed ()

反转:将数组中的元素顺序进行反转

返回一个反转后的新数组,不对原数组进行改动

返回一个反转后的list,不对原数组进行改动

sort ()

sortedArray ()

sorted ()

排序:对数组中的元素进行自然排序

返回一个自然排序后的新数组,不对原数组进行改动

返回一个自然排序后的list,不对原数组进行改动

joinToString (字符串分隔符)将***Array原生数组拼接成一个String,默认分隔符是“,”

all (predicate)

any (predicate)

全部元素满足条件返回 true,否则 false

任一元素满足条件返回 true,否则 false
val arr = arrayOf(1, 2, 3, 4, 5) val cc = charArrayOf('你','们','好') val brr =
arrayOf(5,2,1,4,3) //数组长度 val num1 = arr.size //5 //最大索引 val num2 = arr.indices
//4 for (i in arr.indices) print(i) //01234 //条件判断 val boolean1 = arr.all { i
-> i > 3 } //false,不是全部元素>3 //增 val arr1 = arr.plus(6) //123456,长度+1并赋值为6 val
arr2 = arr + 6 //同上 //改 val arr3 = arr.slice(2..4) //345 arr.fill(0)
//00000,操作的是原数组 val str1 = cc.joinToString("") //你们好 brr.sort() //12345 val
list1 = brr.sorted() //返回一个排序后的list val brr4 = brr.sortedArray() //返回排序后的新数组
val arr5 = arr.copyOf() //12345 val arr6 = arr.copyOf(2) //12 val arr7 =
arr.copyOfRange(2,4) //34
多维数组
//方式一:数组里面存的元素是数组 val aa = arrayOf(arrayOf(1, 2, 3),arrayOf(4, 5, 6))
print(aa[1][2]) //6 //方式二:元素为null但类型是数组 val bb = arrayOfNulls<Array<Int>>(2)

技术
下载桌面版
GitHub
Gitee
SourceForge
百度网盘(提取码:draw)
云服务器优惠
华为云优惠券
腾讯云优惠券
阿里云优惠券
Vultr优惠券
站点信息
问题反馈
邮箱:[email protected]
吐槽一下
QQ群:766591547
关注微信