Dart 语言 集合过滤与条件集合技术实践

Dart阿木 发布于 2025-06-18 6 次阅读


Dart 语言集合过滤与条件集合技术实践

在 Dart 语言中,集合(Collection)是处理数据的一种非常强大的方式。集合操作是编程中常见的需求,特别是在处理大量数据时。Dart 提供了丰富的集合操作方法,其中过滤和条件集合技术是特别实用的。本文将围绕 Dart 语言中的集合过滤与条件集合技术进行实践,通过一系列的代码示例来展示如何使用这些技术。

Dart 集合简介

在 Dart 中,集合是一组有序且互不相同的元素。Dart 提供了多种集合类型,包括 List(列表)、Set(集合)、Map(映射)等。本文主要关注 List 和 Set 类型。

List

List 是 Dart 中最常用的集合类型之一,它是一个有序的元素序列。List 可以包含任何类型的元素,包括其他 List。

dart

List<int> numbers = [1, 2, 3, 4, 5];


Set

Set 是一个无序的集合,它只包含唯一的元素。Set 中的元素类型通常是不可变的,例如数字或字符串。

dart

Set<String> colors = {'red', 'green', 'blue'};


集合过滤

集合过滤是指从集合中筛选出满足特定条件的元素。在 Dart 中,可以使用 `where` 方法对 List 进行过滤,使用 `where` 和 `whereType` 方法对 Set 进行过滤。

List 过滤

以下是一个使用 `where` 方法过滤 List 的示例:

dart

List<int> numbers = [1, 2, 3, 4, 5];


List<int> evenNumbers = numbers.where((number) => number.isEven).toList();


print(evenNumbers); // 输出: [2, 4]


在这个例子中,我们创建了一个名为 `evenNumbers` 的新 List,它只包含原始 `numbers` List 中偶数的元素。

Set 过滤

对于 Set,我们可以使用 `where` 和 `whereType` 方法进行过滤:

dart

Set<String> colors = {'red', 'green', 'blue', 'red'};


Set<String> uniqueColors = colors.where((color) => color != 'red').toSet();


print(uniqueColors); // 输出: {'green', 'blue'}


在这个例子中,我们创建了一个名为 `uniqueColors` 的新 Set,它排除了重复的元素 'red'。

条件集合技术

条件集合技术是指在集合操作中应用条件逻辑,以实现更复杂的筛选和转换。

条件映射

条件映射是指根据条件对集合中的元素进行转换。在 Dart 中,可以使用 `map` 方法结合条件表达式来实现。

dart

List<int> numbers = [1, 2, 3, 4, 5];


List<String> numberStrings = numbers.map((number) => number.toString()).toList();


print(numberStrings); // 输出: ['1', '2', '3', '4', '5']


在这个例子中,我们将每个数字转换为字符串。

条件排序

条件排序是指根据条件对集合进行排序。在 Dart 中,可以使用 `sort` 方法结合条件表达式来实现。

dart

List<int> numbers = [5, 3, 1, 4, 2];


numbers.sort((a, b) => a.compareTo(b));


print(numbers); // 输出: [1, 2, 3, 4, 5]


在这个例子中,我们使用 `compareTo` 方法对数字进行升序排序。

实践案例

以下是一个结合过滤和条件集合技术的实践案例,我们将创建一个用户列表,并筛选出年龄大于 18 的用户,然后根据用户的活跃度进行排序。

dart

class User {


final String name;


final int age;


final int activityLevel;

User(this.name, this.age, this.activityLevel);

@override


String toString() => '$name ($age, $activityLevel)';


}

void main() {


List<User> users = [


User('Alice', 20, 90),


User('Bob', 17, 50),


User('Charlie', 19, 70),


User('David', 18, 30),


];

List<User> filteredUsers = users.where((user) => user.age > 18).toList();


filteredUsers.sort((a, b) => b.activityLevel.compareTo(a.activityLevel));

print(filteredUsers);


// 输出: [Alice (20, 90), Charlie (19, 70), David (18, 30)]


}


在这个案例中,我们首先使用 `where` 方法筛选出年龄大于 18 的用户,然后使用 `sort` 方法根据活跃度进行降序排序。

总结

Dart 语言的集合过滤与条件集合技术为数据处理提供了强大的工具。通过使用 `where`、`map` 和 `sort` 等方法,我们可以轻松地对集合进行筛选、转换和排序。本文通过一系列的代码示例展示了这些技术的实践,希望对读者有所帮助。在实际开发中,灵活运用这些技术可以大大提高代码的效率和可读性。