在 Kotlin 开发中,我们经常会遇到需要将一个 List 中的内容合并到 Set 中的场景。本文将总结几种常见且实用的方法,适用于不同场景下的需求。


1. 概述

Set 是一组无序且不重复的元素集合,而 List有序且可重复的元素集合。

在实际开发中,我们经常需要将 List 转换为 Set,以达到去重或集合操作的目的。本文将介绍几种将 List 内容添加到 Set 的方式,并附上示例代码供参考。


2. 使用 for 循环手动添加

这是最基础、最直观的方式。通过遍历 List,逐个将元素添加到 Set 中:

fun addListToSet(list: List<String>): Set<String> {
    val set = mutableSetOf<String>()
    for (element in list) {
        set.add(element)
    }
    return set
}

优点:逻辑清晰,适合新手理解
缺点:代码冗长,效率不如内置方法

测试用例如下:

@Test
fun `test adding list contents to set programmatically`() {
    val list = listOf("apple", "banana", "orange")
    val set = addListToSet(list)
    assertEquals(setOf("apple", "banana", "orange"), set)
}

3. 使用 Set 的 addAll() 方法

Kotlin 的 MutableSet 提供了 addAll() 方法,可以直接将整个 List 添加进去:

@Test
fun `test adding list contents to set using addAll() method`() {
    val list = listOf("apple", "banana", "orange")
    val set = mutableSetOf<String>()
    set.addAll(list)
    assertEquals(setOf("apple", "banana", "orange"), set)
}

优点:代码简洁,性能好
⚠️ 注意:该方法仅适用于 MutableSet


4. 使用 List 的 toSet() 方法

这是最推荐的方式之一,使用 Kotlin 标准库中 List 接口提供的 toSet() 方法直接转换:

@Test
fun `test adding list contents to set using toSet() method`() {
    val list = listOf("apple", "banana", "orange")
    val set = list.toSet()
    assertEquals(setOf("apple", "banana", "orange"), set)
}

优点:一行代码搞定,语义清晰
⚠️ 注意:返回的是不可变的 Set,如需修改请转为 mutableSetOf


5. 使用 plus 运算符 (+)

Kotlin 支持使用 + 运算符将 List 合并到 Set 中:

@Test
fun `test adding list contents to set using plus operator`() {
    val set = setOf<String>()
    val list = listOf("apple", "banana", "orange")
    val newSet = set + list
    assertEquals(setOf("apple", "banana", "orange"), newSet)
}

优点:语法简洁,写法灵活
⚠️ 注意+ 会生成一个新的 Set,原 Set 不会被修改


6. 使用 union() 方法

除了 plus(),我们还可以使用 union() 方法来实现相同的功能:

@Test
fun `test adding list contents to set using union method`() {
    val set = setOf<String>()
    val list = listOf("apple", "banana", "orange")
    val newSet = set.union(list)
    assertEquals(setOf("apple", "banana", "orange"), newSet)
}

优点:语义更明确,适用于集合操作
⚠️ 注意:和 plus() 一样,会产生新对象


7. 总结

本文介绍了几种在 Kotlin 中将 List 内容添加到 Set 的常用方式:

方法 是否推荐 说明
for 循环 适合理解原理,不建议实际使用
addAll() 适合 MutableSet
toSet() ✅✅ 推荐使用,简洁高效
plus(+) 适合函数式写法
union() 语义更清晰,适合集合操作

📌 推荐使用 toSet() 方法,简单、高效、语义清晰,是日常开发中最常用的方式。

如有其他方式或更复杂场景,欢迎留言交流。


原始标题:How to Add List Contents Into a Set in Kotlin