Конвертировать Set <Int>в varargs эффективно в Kotlin - PullRequest
0 голосов
/ 05 июля 2019

Я хочу преобразовать набор целых чисел в varargs (массив строк) и наоборот.

Есть ли более эффективный способ (чем код ниже) для достижения этого в kotlin?

// SET<INT> -> VARARGS
// intIds: Set<Int>
val stringIds = intIds.toTypedArray().map { i -> i.toString() }.toTypedArray()
//to get varargs, use *stringIds

// SET<STRING> -> SET<INT>
// val stringIds: Set<String>
val intIds = stringIds?.stream()?.map { i -> i.toInt() }?.collect(Collectors.toSet())

Ответы [ 2 ]

2 голосов
/ 05 июля 2019

Это немного проще

val stringIds = intIds.map { it.toString() }.toTypedArray()
//to get varargs, use *stringIds

// SET<STRING> -> SET<INT>
// val stringIds: Set<String>
val intIds2 = stringIds.map { it.toInt() }.toSet()
1 голос
/ 05 июля 2019
val stringIds = arrayOfNulls<String>(intIds.size)
intIds.forEachIndexed { idx, it -> stringIds[idx] = it.toString() }
stringIds as Array<String> // assert no null elements here
// ^^ or you can create your own `mapToArray` extension

val intIds = stringIds.mapTo(HashSet(), String::toInt)
...