集合写入操作
可变集合 允许执行改变集合内容的操作, 比如, 可以添加或删除元素. 本节中, 我们会介绍所有 MutableCollection
都支持的共通的写入操作. List
和 Map
的专有的写入操作, 请分别参见 List 相关操作 和 Map 相关操作.
添加元素
要向 list 或 set 添加单个元素, 可以使用 add()
函数. 指定的对象会被添加到集合末尾.
addAll()
会将参数对象中的所有元素全部添加到 list 或 set. 参数可以是 Iterable
, Sequence
, 或 Array
. 这个函数的接受者类型以及参数类型可以不同, 比如, 你可以将 Set
中的所有元素添加到 List
.
如果在 list 上调用 addAll()
函数, 那么它将新元素添加到 list 的顺序, 会与元素在参数对象中的顺序相同. 调用 addAll()
函数时也可以增加一个额外的参数, 用来指定新元素添加的位置. 参数对象中的第一个元素会被添加到这个位置上, 所有其他元素会被添加在它之后, 将函数接受者对象集合中原有的元素移动到后面的位置.
也可以使用 in-place 版本的 加(plus)
操作符 - 加然后赋值(plusAssign)
(+=
) 来添加元素. 当对可变集合使用 +=
操作符时, 会将第二个操作数 (可以是单个元素, 或另一个集合) 添加到集合的末尾.
删除元素
要从可变集合中删除元素, 可以使用 remove()
函数. remove()
的参数是元素值, 它会从集合中删除与这个值相等的一个元素.
如果要一次性删除多个元素, 可以使用以下函数:
removeAll()
函数, 删除参数集合中出现的所有元素. 或者, 你也用一个判定条件(predicate)为参数来调用这个函数; 这种情况下, 会删除所有使得判定条件计算结果为true
的元素.retainAll()
函数, 与removeAll()
相反: 它删除参数集合中出现的元素以外的所有元素. 如果使用判定条件(predicate)为参数, 会保留满足判定条件的元素, 删除其他元素.clear()
函数, 从 list 中删除所有元素, 使它变成一个空 list.
从集合中删除元素的另一种方法是使用 减然后赋值(minusAssign)
(-=
) 操作符 – 也就是 in-place 版的 减(minus)
操作符. 第二个操作数可以是单个元素, 也可以是另一个集合. 如果第二个操作数是单个元素, -=
只从集合中删除 第一个 与它相等的元素. 相应的, 如果第二个操作数是集合, 那么这个集合中的 所有 元素都会被删除. 比如, 如果 list 包含重复的元素, 那么这些重复元素会被全部删除. 第二个操作数可以包含集合中不存在的元素. 这样的元素不会影响操作结果.
更新元素
list 和 map 还提供了更新元素的操作. 具体的介绍请参见 List 相关操作 和 Map 相关操作. 对于 set, 更新操作是无意义的, 因为它实际上等于删除一个旧元素, 然后添加一个新元素.