Kotlin 汇合
- 减少了 “ 不可变 ” 汇合框架的接口
- 没有重整旗鼓, 复用 Java API 的所有实现类型
- 提供了丰盛的办法,例如 forEach/map/flatMap 等高阶函数
- 运算符级别的反对,简化汇合框架的拜访
1. Kotlin VS Java 汇合
类型 | Kotlin | Java |
---|---|---|
不可变 List | List<T> | List<T> |
可变 List | MutableList<T> | List<T> |
不可变 Map | Map<K,V> | Map<K,V> |
可变 Map | MutableMap<K,V> | Map<K,V> |
不可变 Set | Set<T> | Set<T> |
可变 Set | MutableSet<T> | Set<T> |
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 小屋
欢送关注集体公众号