用 Kotlin 写 Android 3—数组,集合与字符串

数组

相比 Java,在 Kotlin 里数组的写法变化还是挺大的,用 xx-Array 的命名规则来声明一个数组类型,并用 xx-ArrayOf 来进行初始化。

例如整型数组,IntArray 类型,IntArrayOf 是初始化方法,以此类推其他基础类型也差不多。

要注意的是,String 类型的数组声明有所不同,Array 表示一个字符串数组,arrayOf 是初始化方法。由此也可以得出,像我们自己定义的一些模型类要是想声明一个数组应该是和 String 一个用法。

虽说数组的声明写法上有差别,但在数组元素的基本使用上可以说相差不大。

容器类

Kotlin 里的容器类分三大类,并且每个类又分为不可修改和可修改两种,这就好比 val 和 var 的变量声明一样。默认情况是不可修改的,要想对容器类进行类似增,删,改的操作就要声明可修改,即要加上前缀 Mutable-。和数组初始化方法类似,容器类的初始化方法也是 xx-Of 系列,xx 表示具体容器类型,例如如果是可变集合初始化那就是 MutableSetOf。

  • Set
    默认叫只读集合,MutableSet 就叫可变集合。集合内元素 无序,值唯一。

  • List
    默认叫只读列表,MutableList 就叫可变列表。列表内元素 有序,值不唯一。MutableList 还支持元素排序。

  • Map
    默认叫只读映射,MutableMap 就叫可变映射。映射内元素,无序,键唯一,值不唯一。

遍历

三者都能进行 for-in 循环,

for(item in collection){
    //item 就是集合元素,collection 的类型为 set, list, map 任一
}
//List 的特殊性
for(i in collection.indices){
    //indices 表示集合的区间,i 就表示 index
}

三者都能进行迭代器循环遍历,

val iterator = collection.iterator();
while(iterator.hasNext()){
    val item = iterator.next();
}

除此之外三者还能进行 forEach 循环遍历,不过对 Map 来说有 API 24 的版本限制,其次虽说写法简单,但可能实用性不那么强,毕竟实际开发中不会说仅做个简单遍历吧。所以我觉得记住上面两种较通用的写法就够了。

字符串

字符串的常规方法没有太大的改变,我们依然可以用 indexOf, subString, replace, split 等方法。对于类型转换,Kotlin 中的字符串提供了 to-xxx 系列的方法,例如字符串转整型 toInt,字符串转浮点型 toFloat 等。

另外一个就是 Kotlin 里用 ${} 替换了 Java 中的 String.format 来用于字符串模板效果。

你可能感兴趣的:(用 Kotlin 写 Android 3—数组,集合与字符串)