要删除Dart类列表中具有相同参数的元素,可以按照以下步骤进行操作:
class MyClass {
int id;
String name;
MyClass(this.id, this.name);
}
List<MyClass> myList = [
MyClass(1, 'A'),
MyClass(2, 'B'),
MyClass(3, 'C'),
MyClass(2, 'B'),
MyClass(4, 'D'),
];
where
方法结合toSet
方法来实现。where
方法用于过滤列表中的元素,而toSet
方法用于将过滤后的元素转换为集合,从而去除重复元素。最后,再将集合转换回列表。myList = myList.where((element) => myList.where((e) => e.id == element.id && e.name == element.name).length == 1).toList();
上述代码中,where
方法的参数是一个匿名函数,用于判断列表中的元素是否满足条件。在这里,我们使用了嵌套的where
方法来查找具有相同参数的元素,并通过length
属性判断是否只有一个相同参数的元素。如果是,则保留该元素,否则过滤掉。
myList.forEach((element) {
print('id: ${element.id}, name: ${element.name}');
});
完整的代码示例如下:
class MyClass {
int id;
String name;
MyClass(this.id, this.name);
}
void main() {
List<MyClass> myList = [
MyClass(1, 'A'),
MyClass(2, 'B'),
MyClass(3, 'C'),
MyClass(2, 'B'),
MyClass(4, 'D'),
];
myList = myList.where((element) => myList.where((e) => e.id == element.id && e.name == element.name).length == 1).toList();
myList.forEach((element) {
print('id: ${element.id}, name: ${element.name}');
});
}
这样,就能删除Dart类列表中具有相同参数的元素了。
领取专属 10元无门槛券
手把手带您无忧上云