kotlin数组
2019-06-22 本文已影响1人
凌烟醉卧
1)创建数组的两种方式
- 使用 array ()、 arrayOfNull ()、 emptyArray()工具函数。
//使用arrayOf()创建数组 系统可以推断出类型
var result = arrayOf("Java","Python","C++")
//创建一个元素为null的数组 需要使用泛型类指定数组类型
var result2 = arrayOfNulls<Int>(3)
//创建长度为0的空数组 需要使用泛型类指定数组类型
var result3 = emptyArray<String>()
- 使用 Array()构造器
//创建指定长度,使用Lambda表达式初始化数组元素的数组 可以动态的计算数组元素的值
var arr4 = Array (5,{(it * 2 + 1)})
for(item in arr4){
print(item)// 1 3 5 7 9
}
//如果将基本类型传入Array<T>中,Kotlin会将这些基本类型自动装箱,所以提供了了 ByteArray ShortArray等等
//静态初始化
var doubleArr = doubleArrayOf(1.0,2.0,6.43,3.5,4.65)
//动态操作
var intArr2 = IntArray(5, {it * it})
2)数组的使用
- 赋值: str[2] = "Java"
- 取值: str[2]
- 使用 prices.size来得到数组的长度
- 使用for..in来循环遍历数组
- 使用 indices 来获取数组的索引,代替 prices.size
var result = arrayOf(1,2,3,4)
for (index in result.indices){//indices 具有更好的性能
print(result[index])//1,2,3,4
}
- 使用lastlndex来获取最后一个索引
- 同时访问数组的索引和元素,可以使用 withIndex() 方法,,该方法返回一个Iterable 对象,该对象的所有元素都是 IndexedValue 。
var result = arrayOf(1,2,3,4)
for ((index,value) in result.withIndex()){
print("index为${index}的值为${value}\n")
}
3)数组的常用方法
var result = arrayOf(1,2,3,4)
//使用 Lambda 表达式要求所有数组元素都满足该表达式,如果都满足,那么该方法返回 true
print(result.all({it>2})) //false
//使用 Lambda 表达式要求其中只要有一个数组元素该表达式,如果满足,那么该方法返回 true
print(result.any({it>3})) //true
//将数组转为集合
print(result.asList()) //[1, 2, 3, 4]
//根据数组元素来计算<K,V>对,返回所有<K,V>对组成的 Map集合
print(result.associate({it + 10 to it* it}))//{11=1, 12=4, 13=9, 14=16}
var map= mutableMapOf(5 to 100 , 2 to 120 , -1 to 130)
print(map)//{1=100, 2=120, -1=130}
//将数组转为map对象,并且添加到其它的map中
print(result.associateByTo(map, {it* it})) //{1=1, 2=120, -1=130, 4=2, 9=3, 16=4}
//计算数组所有元素的总和
println(result.fold(0, {ace , e ->ace+ e})) //10
//两个数组,如果长度和顺序都相等,返回true
print(result.contentEquals(result))//true
//复制数组
var result2 = result.copyOf(6)
print(result2.asList())//[1, 2, 3, 4, null, null]
//将数组转为字符串
print(result2.contentToString())//[1, 2, 3, 4, null, null]
//将result2数组从第5(indexWie4)个到第7(index为6)个元素赋值为1
result2.fill(1,4,6)//1是赋给的值 4和6是下标(包含4,不包含6)
print(result2.contentToString())
//对数组进行排序
result.sort()