卖汽车的网站怎么做的,上海网站定制团队,王烨名字打分,无锡设计师网站数组是一种数据结构#xff0c;它保存固定数量的相同类型或其子类型的值。kotlin中最常见的数组类型是对象类型数组#xff0c;数组由array类表示。
什么时候使用
当你在kotlin中有特殊的底层需求需要满足时#xff0c;可以使用数组。例如#xff0c;如果你有超出常规应用…数组是一种数据结构它保存固定数量的相同类型或其子类型的值。kotlin中最常见的数组类型是对象类型数组数组由array类表示。
什么时候使用
当你在kotlin中有特殊的底层需求需要满足时可以使用数组。例如如果你有超出常规应用所需的性能要求或者你需要构建自定义的数据结构。如果你没有这些限制那么可以使用集合Collections。
与数组相比集合有以下优点
集合可以是只读的这给你提供了更多的控制权使你能够编写具有明确意图的健壮代码。从集合中添加或删除元素很容易。相比之下数组的大小是固定的。从数组中添加或删除元素的唯一方法是每次都创建一个新的数组这非常低效。fun main() {val riversArray1 arrayOf(Nile, Amazon, Yangtze)val riversArray2 riversArray1 Mississippiprintln(riversArray1.joinToString()) // Nile, Amazon, Yangtzeprintln(riversArray2.joinToString()) // Nile, Amazon, Yangtze, Mississippi
}可以使用来比较两个集合是否相同但是不能使用该操作来比较数组
创建数组 arrayOf()arrayOfNulls() emptyArray()fun main() {val simpleArray arrayOf(1, 2, 3)println(simpleArray.joinToString()) // 1, 2, 3val nullArray: ArrayInt? arrayOfNulls(3)println(nullArray.joinToString()) // null, null, nullval exampleArray1 emptyArrayString()val exampleArray2: ArrayString emptyArray()println(exampleArray1.joinToString()) // 空println(exampleArray2.joinToString()) // 空
}Array 的构造方法 Array构造函数接受数组大小和一个函数该函数根据数组的索引返回数组元素的值 fun main() {val initArray ArrayInt(3) { 0 }println(initArray.joinToString()) // 0, 0, 0val asc Array(5) { i - (i * i).toString() }println(asc.joinToString()) // 014916
}嵌套数组
fun main() {// 两层嵌套val twoDArray Array(2) { ArrayInt(2) { 0 } }println(twoDArray.contentDeepToString()) // [[0, 0], [0, 0]]// 三层嵌套val threeDArray Array(3) { Array(3) { ArrayInt(3) { 0 } } }println(threeDArray.contentDeepToString()) // [[[0, 0, 0], [0, 0, 0], [0, 0, 0]], [[0, 0, 0], [0, 0, 0], [0, 0, 0]], [[0, 0, 0], [0, 0, 0], [0, 0, 0]]]
}嵌套数组可以是不通长度不同类型 获取/修改
数组中的元素是可变的如果想要获取和修改数组中的元素需要使用[索引]来操作
fun main() {val simpleArray arrayOf(1, 2, 3)val twoDArray Array(2) { ArrayInt(2) { 0 } }// 修改元素simpleArray[0] 10twoDArray[0][0] 2println(simpleArray[0].toString()) // 10println(twoDArray[0][0].toString()) // 2
}使用数组
在kotlin中数组可以作为方法的可变数量参数使用也可以对数组本身做操作如比较数组、转换数组内容转成集合等
可变数量参数
可变数量参数使用vararg 声明传递参数前使用*
fun main() {val lettersArray arrayOf(c, d)printAllStrings(a, b, *lettersArray)// abcd
}fun printAllStrings(vararg strings: String) {for (string in strings) {print(string) }
}比较
对比数据需要使用.contentEquals()或者.contentDeepEquals()方法
fun main() {val simpleArray arrayOf(1, 2, 3)val anotherArray arrayOf(1, 2, 3)println(simpleArray.contentEquals(anotherArray)) // true// 修改元素simpleArray[0] 10 println(simpleArray contentEquals anotherArray) // false
}常用方法
求和
fun main() {val sumArray arrayOf(1, 2, 3)println(sumArray.sum()) // 6
}洗牌打乱顺序
随机打乱顺序
fun main() {val simpleArray arrayOf(1, 2, 3)simpleArray.shuffle()println(simpleArray.joinToString()) // 1, 3, 2simpleArray.shuffle()println(simpleArray.joinToString()) // 2, 1, 3
}转成集合
转成List或者Set使用.toList()或者.toSet()方法
fun main() {val simpleArray arrayOf(a, b, c, c)println(simpleArray.toSet()) // [a, b, c]println(simpleArray.toList())// [a, b, c, c]
}转成Map使用.toMap方法 只有键值对数组才能转成Map
fun main() {val pairArray arrayOf(apple to 120, banana to 150, cherry to 90, apple to 140)println(pairArray.toMap()) // {apple140, banana150, cherry90}
}基本类型数组
如果使用上文中的数组数据类型会被包装成Object类型如果需要存储基本数据类型的元素可以使用基本数据类型数组避免开装箱造成的性能损失
基本类型数组有
BooleanArrayByteArrayCharArrayDoubleArrayFloatArrayIntArrayLongArrayShortArray
虽然这写类和Array没有继承关系但是具有相同的方法
Object类型数组和基本类型数组可以互转
fun main() {val intObjArray arrayOf(1, 2, 3, 4)intObjArray.toIntArray() // 转成Int数组val intArray intArrayOf(1, 2, 3, 4)intArray.toTypedArray() // 转成Object数组val booleanArray booleanArrayOf(false, true)booleanArray.toTypedArray()val booleanObjArray arrayOf(false, true)booleanObjArray.toBooleanArray()
}