intellij-idea kotlin set code-inspection intellij-inspections

intellij idea - ¿Por qué IntelliJ sugiere convertir una cadena de llamadas en una secuencia?



intellij-idea kotlin (2)

En este caso la sugerencia es subóptima. La forma correcta de volver a escribir este código (que tampoco genera advertencias de IntelliJ) es:

src.mapTo(hashSetOf()) { it.length }

Esto evitará la creación de una lista intermedia que se convertirá posteriormente en un conjunto; los datos se agregarán al conjunto resultante de inmediato.

Supongamos el siguiente ejemplo de Kotlin que asigna el conjunto de origen src a un conjunto de destino dst :

private val src: Set<String> = setOf("hello", "world") private val dst: Set<Int> = src.map { it.length }.toSet()

Esto funciona bien. Sin embargo, la inspección del código de IntelliJ sugiere: la cadena de llamadas en la recopilación debe convertirse en ''Secuencia'':

Aplicando esta sugerencia resulta en

private val dst: Set<Int> = src.asSequence().map { it.length }.toSet()

¿Cuál es el beneficio de esto?


Set.map devuelve una lista, que luego tiras inmediatamente después de convertirla en un conjunto. El beneficio de asSequence es que la secuencia realiza la conversión, presumiblemente sin una lista temporal.