【DOC】Kotlin 数组 Array
2017-05-30 00:00
99 查看
数组在 Kotlin 中使⽤ Array 类来表⽰,它定义了 get 和 set 函数(按照运算符重载约定这会转变为 [])和 size 属性,以及⼀些其他有⽤的成员函数:
我们可以使⽤库函数 arrayOf() 来创建⼀个数组并传递元素值给它,这样 arrayOf(1, 2, 3) 创建了 array [1, 2, 3]。 或者,库函数arrayOfNulls() 可以⽤于创建⼀个指定⼤⼩、元素都为空的数组。
另⼀个选项是⽤接受数组⼤⼩和⼀个函数参数的⼯⼚函数,⽤作参数的函数能够返回 给定索引的每个元素初始值:
如上所述,[] 运算符代表调⽤成员函数 get() 和 set()。
注意: 与 Java 不同的是,Kotlin 中数组是不型变的(invariant)。这意味着 Kotlin 不让我们把 Array<String> 赋值给 Array<Any>,以防⽌可能的运⾏时失败(但是你可以使⽤ Array<out Any>, 参⻅类型投影)。
Kotlin 也有⽆装箱开销的专⻔的类来表⽰原⽣类型数组: ByteArray、 ShortArray、IntArray 等等。这些类和 Array 并没有继承关系,但是 它们有同样的⽅法属性集。它们也都有相应的⼯⼚⽅法:
#Over
class Array<T> private constructor() { val size: Int operator fun get(index: Int): T operator fun set(index: Int, value: T): Unit operator fun iterator(): Iterator<T> // …… }
我们可以使⽤库函数 arrayOf() 来创建⼀个数组并传递元素值给它,这样 arrayOf(1, 2, 3) 创建了 array [1, 2, 3]。 或者,库函数arrayOfNulls() 可以⽤于创建⼀个指定⼤⼩、元素都为空的数组。
另⼀个选项是⽤接受数组⼤⼩和⼀个函数参数的⼯⼚函数,⽤作参数的函数能够返回 给定索引的每个元素初始值:
// 创建数组 var arr0 = emptyArray<Int>() // 长度为0的空数组 var arr1 = arrayOfNulls<Int>(250) // 指定长度,元素都为空 val arr2 = arrayOf(1, 2, 3) // 使用装箱 val intArr = intArrayOf(1, 2, 3) // 还有 booleanArrayOf()、ByteArrayOf()、ShortArrayOf()等 var arr3 = Array(5){IntArray(4)} // 二维数组 // 创建⼀个 Array<String> 初始化为 ["0", "1", "4", "9", "16"] val Arr4 = Array(5, { i -> (i * i).toString() })
如上所述,[] 运算符代表调⽤成员函数 get() 和 set()。
注意: 与 Java 不同的是,Kotlin 中数组是不型变的(invariant)。这意味着 Kotlin 不让我们把 Array<String> 赋值给 Array<Any>,以防⽌可能的运⾏时失败(但是你可以使⽤ Array<out Any>, 参⻅类型投影)。
Kotlin 也有⽆装箱开销的专⻔的类来表⽰原⽣类型数组: ByteArray、 ShortArray、IntArray 等等。这些类和 Array 并没有继承关系,但是 它们有同样的⽅法属性集。它们也都有相应的⼯⼚⽅法:
val x: IntArray = intArrayOf(1, 2, 3) x[0] = x[1] + x[2]
#Over
相关文章推荐
- Kotlin语言学习之Array数组使用
- Kotlin数组(Array)
- 花括号中的json数据--->转为数组array
- [LeetCode] 215. Kth Largest Element in an Array 数组中第k大的元素
- Python 列表 list 数组 array 常用操作集锦
- js中数组(Array)的排序(sort)注意事项
- PHP数组函数: array_walk()
- smarty中数组array怎么使用呢
- php 计时器microtime 以及去掉数组重复值array_unique
- C++ 数组array与vector的比较
- java.io中的read方法详解(尤其在数组流即在ByteArrayInputStream中)
- 删除array数组中的重复项的实现代码
- php数组求和array_merge和+号 的区别
- 【转】 JavaScript中Array(数组)的属性和方法
- JS 操作Array数组的方法及属性实例解析
- Java并发学习(八)-AtomicIntegerArray数组类型类
- delphi 取json中数组的值(ISuperArray)
- leetcode解题之189 # Rotate Array Java版 (对数组的部分翻转)
- 利用array_diff去除两个数组重复值
- 前端总结·基础篇·JS(二)数组深拷贝、去重以及字符串反序和数组(Array)