Kotlin 集合
- 增加了 "不可变" 集合框架的接口
- 没有另起炉灶, 复用Java API 的所有实现类型
- 提供了丰富的方法,例如 forEach/map/flatMap 等高阶函数
- 运算符级别的支持,简化集合框架的访问
1. Kotlin VS Java 集合
类型 | Kotlin | Java |
---|---|---|
不可变List | List | List |
可变List | MutableList | List |
不可变Map | Map<K,V> | Map<K,V> |
可变Map | MutableMap<K,V> | Map<K,V> |
不可变Set | Set | Set |
可变Set | MutableSet | Set |
1. 创建List 集合
java
List<String> list = new ArrayList<>();
List<Integer> list = new ArrayList(Arrays.asList(1,2,3));
kotlin
val stringList = listOf("Hello" , "World")
val mutableStringList = mutableListOf("Hello","World")
var stringList = ArrayList<String>()
// 省去new 其他和Java类似,但是这个ArrayList 是 kotlin.collections.ArrayList
//通过 typealias ArrayList<E> = java.util.ArrayList<E>
2. List集合的读写
java
List<String> list = new ArrayList<>();
list.add("Hello");
list.add("Java");
list.get(0);
kotlin
可是直接使用类似数组下标方式 [] 去读写list ,当stringList[1]表达式在左边表示 赋值 在右边表示 get取值
val stringList = ArrayList<String>()
stringList.add("Hello")
stringList[1] = "World" //等于 stirngList.add("Wrold") 在=号左边
val hellostring = stringList.get(0)
val worldstring = stringList[1] //等于 stirngList.get(1) 在=号右边
3. Map集合的创建
java
Map<String,Object> map = new HashMap<>();
map.put("Hello","World");
kotlin
使用 to 创建 Pair 类型
val stringmap = mapOf("Hello" to "World" , "age" to 20)
//"Hello" to "World" 立即为 K-V即可
4.集合框架的读写
4.1 写入集合
4.1.1 list 写入
可以使用 add 或者 +=
+= 对于List来说 等价于 add
val stringList3 = mutableListOf<String>("1","2","3")
for(i in stringList3.indices){
stringList3.add("num: $i")
}
for(i in stringList3.indices){
stringList3 += ("num: $i")
}
-= 对于List来说 等价于 remove
for(i in stringList3.indices){
stringList3 -= ("num: $i")
}
println(stringList3.joinToString())
4.1.2 map 写入
stringmap["Hello"] = "World"
stringmap.plus("Hello" to "World")
4.2 读取集合
4.2.1 list读取
val hellostring = stringList.get(0)
val worldstring = stringList[1] //等于 stirngList.get(1) 在=号右边
4.2.2 map读取
也可使用[] 方式
val key = stringmap["Hello"]
val getkey = stringmap.get("Hello")
5. 集合别名
有没有注意,kotlin中创建集合的 ArrayList 和 Java中的 很像,但是其实是不一样的,通过别名的方式
java
List<String> list = new ArrayList<>();
Kotlin
var stringList = ArrayList<String>()
// 省去new 其他和Java类似,但是这个ArrayList 是 kotlin.collections.ArrayList
//通过 typealias ArrayList<E> = java.util.ArrayList<E>
Kotlin 中集合别名
@SinceKotlin("1.1") public typealias ArrayList<E> = java.util.ArrayList<E>
@SinceKotlin("1.1") public typealias LinkedHashMap<K, V> = java.util.LinkedHashMap<K, V>
@SinceKotlin("1.1") public typealias HashMap<K, V> = java.util.HashMap<K, V>
@SinceKotlin("1.1") public typealias LinkedHashSet<E> = java.util.LinkedHashSet<E>
@SinceKotlin("1.1") public typealias HashSet<E> = java.util.HashSet<E>
6. Pair & Triple
6.1 Pair (其实就是 K-V)
val pair = "Hello" to "World" //to 方式创建
val pair2 = Pair("Hello" , "World") //构造函数方式创建
val value1 = pair.first // first 取第一个,既 key
val value2 = pair.second // second 第二个 即value
val (x,y) = pair //解构
6.2 Triple
val triple = Triple("Hello" , 20 , 0.1)
val first = triple.first
val second = triple.second
val third = triple.third
val (x,y,z) = triple
欢迎大家访问 个人博客 Johnny小屋
欢迎关注个人公众号