【问题标题】:Dart combine two Lists in Alternate mannerDart 以交替方式组合两个列表
【发布时间】:2019-11-28 15:57:39
【问题描述】:

我正在尝试用不同的来源填充 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]

如何做到这一点?最惯用的方法是什么?

【问题讨论】:

标签: flutter dart


【解决方案1】:

内置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)

【讨论】:

  • 谢谢,Spatz,我没有意识到我们可以做到这一点,而且效果很好。
【解决方案2】:

我猜是这样的:

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

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

【讨论】:

  • 嗯,你可以排序任何你想要的.....sort((a, b) =&gt; a.length.compareTo(b.length))
猜你喜欢
  • 1970-01-01
  • 2016-03-01
  • 2014-10-02
  • 2013-04-16
  • 2019-11-22
  • 1970-01-01
  • 2022-12-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多