【发布时间】:2018-07-16 19:54:46
【问题描述】:
我有一组字符串
val set = HashSet<String>()
set.add("a")
set.add("b")
set.add("c")
我需要将其转换为数组
val array = arrayOf("a", "b", "c")
【问题讨论】:
我有一组字符串
val set = HashSet<String>()
set.add("a")
set.add("b")
set.add("c")
我需要将其转换为数组
val array = arrayOf("a", "b", "c")
【问题讨论】:
使用扩展函数toTypedArray如下
set.toTypedArray()
该函数属于 Kotlin 库
/**
* Returns a *typed* array containing all of the elements of this collection.
*
* Allocates an array of runtime type `T` having its size equal to the size of this collection
* and populates the array with the elements of this collection.
* @sample samples.collections.Collections.Collections.collectionToTypedArray
*/
@Suppress("UNCHECKED_CAST")
public actual inline fun <reified T> Collection<T>.toTypedArray(): Array<T> {
@Suppress("PLATFORM_CLASS_MAPPED_TO_KOTLIN")
val thisCollection = this as java.util.Collection<T>
return thisCollection.toArray(arrayOfNulls<T>(0)) as Array<T>
}
【讨论】:
将集合(HashSet)转换为数组
import java.util.*
fun main(args: Array<String>) {
val set = HashSet<String>()
set.add("a")
set.add("b")
set.add("c")
val array = arrayOfNulls<String>(set.size)
set.toArray(array)
println("Array: ${Arrays.toString(array)}")
}
当你运行程序时,输出将是:
Array: [a, b, c]
【讨论】:
只需val array = set.toArray()
【讨论】:
Type mismatch. Required: Array<String> Found: Array<(out)Any!>!
Array<(out)Any>!,没有问题。
你可以打电话
val array = set.toArray()
使用 Kotlin 1.2.51 测试。
【讨论】: