- Kotlin 的集合類同樣由兩個接口派生:
Collection
和Map
,Collection
和Map
是 Java 集合框架的根接口,這兩個接口又包含了 一些子接口或實現類 - Kotlin 集合與 Java 集合不同, Java 集合都是可變集合一一開發者可以向集合中添加、刪除、修改元素,但 Kotlin 的集合被分成兩大類: 可變集合和不可變集合。只有可變集合才能添加、刪除、修改元素,不可變集合只能讀取元素。
Collection集合
- Kotlin 為
Collection
接口派生了一個子接口 , 即MutableCollection
,該子接口又包含了兩個子接口 :MutableSet
和MutableList
, 這一分支就代表了 Kotlin 的可變集合。而由Collection
直接派生的Set
、List
接口則代表了不可變集合。
Kotlin的設計思路: - 可變集合接口、可變集合類是不可變集合接口、不可變類的子接口或子類 。
- 每個接口下都有一個抽象實現類 。
Kotlin 的集合實現類比 Java 更少,它只提供了HashSet
、LinkedHashSet
、
ArrayList
這三個最常見的實現類,如果需要使用TreeSet
、LinkedList
集合實現類,則可以使用 Java 集合框架提供的類 。
注意:
Kotlin 在 JVM 平臺上并未真正實現HashSet
、LinkedHashSet
、ArrayList
這些類,只是為 Java 的HashSet
、LinkedHashSet
、ArrayList
指定了一個類型別名而己,這樣就直接借用了 Java 的這些集合類 。 此外, Kotlin 為這些集合類擴展了更多的方法,因
此用起來很方便。
Map集合
- Kotlin 的 Map 派生了
MutableMap
接口,它代表了 一個可變的 Map集合。而實際上 Kotlin 只為 Map 提供了HashMap
、LinkedHashMap
常用實現類。如果開發者需要使用TreeMap
、EnurnMap
或WeakHashMap
,則依然可以使用 Java 集合框架所提供的類。
注意:
Kotlin 在JVM 平臺上并未真正實現HashMap
、LinkedHashMap
,只是為 Java
的HashMap
、LinkedHashMap
指定了一個類型別名而己,這樣就直接借用了 Java
的這些集合類。此外, Kotlin 為這些集合類擴展了更多的方法,因此用起來更方
便。
不難發現 Kotlin 只提供了 HashSet
、 HashMap
、 LinkedHashSet
、LinkedHashMap
、 ArrayList
這 5 個集合實現類,而且它們都是可變集合 。那么說好的不可變集
合呢? Kotlin 的不可變集合類并沒有暴露出來,我們只能通過函數來創建不可變集合