gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 08:17:04 25 4
gpt4 key购买 nike

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

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

最佳答案

1) Vanilla Dart

遍历列表,边走边将 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 的维护者。)

关于list - 如何区分 DART 中的复杂对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60347425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com