私たちは、Bahadirを見つけます:
私は2つの異なる長さのリストを結合したいです。例えば;
val list1 = listOf(1,2,3,4,5)
val list2 = listOf("a","b","c")
私はこのような結果にしたいです
(1,"a",2,"b",3,"c",4,5)
任意の提案はありますか?
ユージン・ペトレンコ:
あなたは使用することができ.zip
、そのための機能を
list1.zip(list2){ a,b -> listOf(a,b)}.flatten()
唯一の問題は、それが唯一のは、異なるサイズを持ってみましょうもしそうなら(例のように)、両方のセットを持つ要素を処理することである - それは動作しません。
代替は、特定のマーカーを追加し、またはそのためのちょうど使用のイテレータにそれらをフィルタリングすることができます。私が持つエレガントな解決策たsequence{..}
機能を
val result = sequence {
val first = list1.iterator()
val second = list2.iterator()
while (first.hasNext() && second.hasNext()) {
yield(first.next())
yield(second.next())
}
yieldAll(first)
yieldAll(second)
}.toList()