如何在 Kotlin 中将数组转换为集合(HashSet)?

5

我有一个字符串数组

val array = arrayOf("a", "b", "c")

我需要将其转换为HashSet。

val set = HashSet<String>()
3个回答

8

使用扩展函数toHashSet,如下所示:

array.toHashSet()

该函数属于Kotlin库

/**
 * Returns a [HashSet] of all elements.
 */
public fun <T> Array<out T>.toHashSet(): HashSet<T> {
    return toCollection(HashSet<T>(mapCapacity(size)))
}

0

将数组转换为集合

import java.util.*

fun main(args: Array<String>) {

    val array = arrayOf("a", "b", "c")
    val set = HashSet(Arrays.asList(*array))

    println("Set: $set")

}

当您运行程序时,输出将为:
Set: [a, b, c]

你能解释一下 val set = HashSet(Arrays.asList(*array)) 中的 * 吗?谢谢! - Hussien Fahmy
@Hussien Fahmy https://dev59.com/eVkS5IYBdhLWcg3w25oMKotlin中的星号运算符在变量名前或作为展开运算符使用。 - Anisuzzaman Babla

0

Kotlin 集合解决方案

直接使用 toSet(*array)toHashSet(*array)。这些都是 Kotlin 标准库的一部分。

星号 *spread 运算符。它将集合中的所有元素逐个应用,每个元素按顺序传递给 vararg 方法参数。

val array = arrayOf("data", "foo")

// Multiple spreads ["data", "foo", "bar", "data", "foo"]
val mySet = setOf(*array, "bar", *array)

不传递参数setOf()会导致一个空集合。

以下是您可以使用的所有特定哈希类型:

setOf()
hashSetOf()
linkedSetOf()
mutableSetOf()
sortableSetOf()

这是如何明确定义集合项类型的方法。

setOf<String>()
hashSetOf<MyClass>()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接