一、List
在Java中,我们可以使用ArraryList,当然在Kotlin中也可以这么做:
1 2 3 4
| val list1 = ArraryList<String>() list1.add("Apple") list1.add("Banana") list1.add("Pear")
|
Kotlin中提供了两种内置函数 listOf()
和 mutableListOf()
来简化初始化List的写法。
前者创建的List不可修改,而后者可修改:
1 2 3 4 5
| val list1 = listOf("Apple", "Banana", "Pear")
val list2 = mutableListOf("Kim", "Sam", "Lisa") list2.add("Jack")
|
我们可以用for-in
循环遍历这些集合
1 2 3
| for (fruit in list1) { println(fruit) }
|
二、Set
Set集合与List集合的用法相近,只是Set集合不能存放重复元素。
Kotlin中同样提供了两种内置函数 setOf()
和 mutableSetOf()
:
1 2 3 4 5 6
| val set = mutableSetOf("Apple", "Apple", "Banana", "Pear") set.add("Apple") set.add("Grape") for (fruit in set) { println(fruit) }
|
三、Map
与其他语言一样,Map是一种以键值对形式的的数据结构,Java中的通常做法是创建一个HashMap实例,用put()
和get()
去操作这个Map:
1 2 3 4
| val map1 = HashMap<String, Int>() map1.put("Apple", 1) map1.put("Banana", 2) map1.put("Pear", 3)
|
在Kotlin中,我们也可以使用类似JavaScript的下标语法:
1 2
| map1["Grape"] = 4 val num = map1["Apple"]
|
当然,Kotlin中也提供了 mapOf()
和 mutableMapOf()
来简化:
1 2 3 4 5
| val map1 = mapOf( "Apple" to 1 "Banana" to 2 "Pear" to 3 )
|
其中的 to 并不是关键字,而是一个 infix函数。
同样,可以使用for循环去遍历Map
1 2 3
| for ((fruit, number) in map1) { println("fruit is " + fruit + ", number is " + number) }
|
四、集合常用lambda操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| val li = listOf(1,3,5,2,4)
val a = li.maxBy{it} println("maxBy: %a")
val b = li.filter{it > 3} println("filter: ") for (n in b) { print("$n ") } println()
val c = li.sortedBy{it} println("sortBy: ") for (n in c) { print("$n ") } println()
val d = li.map{it * 2} println("map: ") for (n in d) { print("$n ") } println()
val e = li.mapIndexed{ index, value -> index * value } println("map: ") for (n in e) { print("$n ") }
|