2024-12-03 00:21:50
本篇记录了 Kotlin 常用集合的相关操作,用以熟练使用 Kotlin 里的相关集合。集合接口与相关函数位于 kotlin.collections 包中。
Kotlin 标准库提供了基本集合类型的实现: Set、List 以及 Map。 一对接口代表每种集合类型:
其中灰色是不可变集合,黄色是可变集合。 Iterator 意为迭代器, Collection 是只读接口,而 MutableCollection 是一个具有写操作的 Collection 接口:
List< T> 以指定的顺序存储元素,并提供使用索引访问元素的方法。从第一个元素索引0 到最后一个元素索引 (list.size - 1) 为止。 List 的默认实现是 ArrayList 。
执行结果会转化为 Map :
Set 内部是用 Map 实现的, Set 相关的实现详见: Java Collection系列之:HashSet、LinkedHashSet、TreeSet的使用及源码解析
Map<K, V> 不是 Collection 接口的继承者;但是它也是 Kotlin 的一种集合类型。 Map 存储 键-值 对(或 条目);键是唯一的,但是不同的键可以与相同的值配对。 Map 接口提供特定的函数进行通过键访问值、搜索键和值等操作。 Map 相关的实现详见: Java Collection系列之HashMap、ConcurrentHashMap、LinkedHashMap的使用及源码分析
Iterable 处理包含多个步骤时,每个处理步骤完成并返回其结果——中间集合,然后在此集合上执行后续步骤。 Sequence 序列仅当请求整个处理链的结果时才进行实际计算: Sequence 对每个元素逐个执行所有处理步骤。
结论 :序列可避免生成中间步骤的结果,从而提高了整个集合处理链的性能。 但是,序列的延迟性质增加了一些开销,这些开销在处理较小的集合或进行更简单的计算时可能很重要。 因此,应该同时考虑使用 Sequence 与 Iterable ,并确定在哪种情况更适合。
执行结果:
执行结果:
上述序列中, Sequence 处理需要 18 个步骤, Iterable 需要 23 个步骤来执行列表操作,上述示例参见 Sequence序列操作 。
创建与现有集合具有相同元素的集合,可以使用复制操作,例如 toList()、toMutableList()、toSet() 等等。标准库中的集合复制操作创建了具有相同元素引用的 浅复制 集合。 因此, 对集合元素所做的更改会反映在其所有副本中,如果对源集合进行添加或删除元素,则不会影响副本 。
排序主要使用 Comparable 及 Comparator 。其中 Comparable 可以理解为是内部排序, Comparator 是外部排序。
集合排序示例: