如何在DART中区分复杂的对象列表

问题描述 投票:0回答:1

我有一个复杂对象列表。如何使用其ID区分列表?

我不能使用toSet和类似的东西,因为来自对象的哈希码都是不同的。

list flutter dart distinct
1个回答
0
投票

[1)香草飞镖

在列表中循环浏览,将ID添加到集合中。每当您将ID添加到尚不存在的ID时,就将该元素添加到新的不同值列表中。

void main() {
  var list = [
    Data('a'),
    Data('a'),
    Data('b'),
    Data('c'),
  ];

  var idSet = <String>{};
  var distinct = <Data>[];
  for (var d in list) {
    if (idSet.add(d.id)) {
      distinct.add(d);
    }
  }
}

class Data {
  Data(this.id);
  final String id;
}

2)软件包

存在多个在默认情况下扩展Iterable实用程序方法的程序包,例如flinqdarq。它们添加了distinct方法,您可以调用该方法以根据成员的某些属性轻松获取列表的唯一成员列表。

import 'package:darq/darq.dart`;

void main() {
  var list = [
    Data('a'),
    Data('a'),
    Data('b'),
    Data('c'),
  ];
  var distinct = list.distinct((d) => d.id).toList();
}

(免责声明,我是darq的维护者。)>

© www.soinside.com 2019 - 2024. All rights reserved.