ソースセットsrc
を宛先セットdst
にマップする次のKotlinの例を想定します。
private val src: Set<String> = setOf("hello", "world")
private val dst: Set<Int> = src.map { it.length }.toSet()
これは正常に機能します。ただし、IntelliJのコードインスペクションでは、コレクションのコールチェーンを「シーケンス」に変換する必要があります:
この提案を適用すると、
private val dst: Set<Int> = src.asSequence().map { it.length }.toSet()
これの利点は何ですか?
この場合、提案は最適ではありません。このコードを書き換える正しい方法は(IntelliJ警告も発生しません):
src.mapTo(hashSetOf()) { it.length }
これにより、後でセットに変換される中間リストの作成が回避されます。データは結果セットにすぐに追加されます。
Set.map
はリストを返します。リストに変換するとすぐにリストが破棄されます。 asSequence
の利点は、おそらく一時的なリストなしで、シーケンスが変換を行うことです。