Kotlin集合概述

  • 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 的不可变集合类并没有暴露出来,我们只能通过函数来创建不可变集合