kotlinに二つの異なる長さのリストを結合する方法は?

私たちは、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()

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=315696&siteId=1