Dart以交替方式合并两个列表

时间:2019-11-28 15:57:39

标签: flutter dart

我试图用不同的来源填充Flutter中的ListView。所以,我有两个列表,

list1 = ['a', 'b', 'c']; #The list isn't of numeric type
list2 = ['2', '4'];

现在,我可以使用spread运算符将它们组合起来并获得以下输出

[a, b, c, 2, 4]

但是我希望输出像-

[a, 2, b, 4, c]

如何实现?什么是最惯用的方法?

2 个答案:

答案 0 :(得分:2)

构建Iterable没有方法zip,但是您可以编写如下内容:

Iterable<T> zip<T>(Iterable<T> a, Iterable<T> b) sync* {
  final ita = a.iterator;
  final itb = b.iterator;
  bool hasa, hasb;
  while ((hasa = ita.moveNext()) | (hasb = itb.moveNext())) {
    if (hasa) yield ita.current;
    if (hasb) yield itb.current;
  }
}

然后使用zip

  final list1 = ['a', 'b', 'c'];
  final list2 = ['2', '4'];
  final res = zip(list1, list2);
  print(res); // (a, 2, b, 4, c)

答案 1 :(得分:0)

我猜是这样:

    List list1 = [1, 3, 5];
    List list2 = [2, 4];

    print([...list1, ...list2]..sort());