kotlin数组

作者: 凌烟醉卧 | 来源:发表于2019-06-22 22:44 被阅读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()

相关文章

网友评论

    本文标题:kotlin数组

    本文链接:https://www.haomeiwen.com/subject/cwrbqctx.html