Dart 语言 集合过滤与数据筛选技术实践

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


Dart 语言集合过滤与数据筛选技术实践

在 Dart 语言中,集合(Collection)是处理数据的一种常见方式。集合操作是编程中不可或缺的一部分,特别是在处理大量数据时。过滤和筛选是集合操作中的基本功能,它们可以帮助我们从集合中提取出满足特定条件的数据。本文将围绕 Dart 语言中的集合过滤与数据筛选技术进行实践,通过一系列示例代码来展示如何实现这些功能。

Dart 集合简介

在 Dart 中,集合包括 List、Set 和 Map 等类型。List 是一个有序的集合,Set 是一个无序且不包含重复元素的集合,而 Map 是一个键值对的集合。本文主要关注 List 和 Set 类型。

List

List 是 Dart 中最常用的集合类型之一,它允许我们存储一系列有序的元素。List 提供了丰富的 API 来操作集合,包括添加、删除、查找和排序等。

Set

Set 是一个无序且不包含重复元素的集合。Set 中的元素可以是任何类型的对象,包括数字、字符串和自定义对象。Set 提供了添加、删除和检查元素等基本操作。

集合过滤与数据筛选

过滤(Filter)

过滤是指从集合中提取出满足特定条件的元素。在 Dart 中,我们可以使用 `where` 方法来实现过滤操作。

dart

void main() {


List<int> numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];


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


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


}


在上面的代码中,我们创建了一个包含 1 到 10 的数字的 List,然后使用 `where` 方法过滤出偶数,并将结果转换为一个新的 List。

筛选(Filter)

筛选与过滤类似,也是从集合中提取满足特定条件的元素。筛选通常用于从集合中排除不满足条件的元素。

dart

void main() {


List<String> names = ['Alice', 'Bob', 'Charlie', 'David', 'Eve'];


List<String> filteredNames = names.where((name) => name.length > 4).toList();


print(filteredNames); // 输出: ['Charlie', 'David', 'Eve']


}


在这个例子中,我们筛选出长度大于 4 的名字。

排序(Sort)

排序是集合操作中另一个重要的功能。在 Dart 中,我们可以使用 `sort` 方法对 List 进行排序。

dart

void main() {


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


numbers.sort();


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


}


在上面的代码中,我们对数字 List 进行了升序排序。

高级筛选与过滤

多条件筛选

在 Dart 中,我们可以使用链式调用来实现多条件筛选。

dart

void main() {


List<String> names = ['Alice', 'Bob', 'Charlie', 'David', 'Eve'];


List<String> filteredNames = names


.where((name) => name.length > 4)


.where((name) => name.startsWith('C'))


.toList();


print(filteredNames); // 输出: ['Charlie', 'David']


}


在这个例子中,我们首先筛选出长度大于 4 的名字,然后在这些名字中进一步筛选出以 'C' 开头的名字。

使用函数作为条件

我们也可以使用函数作为筛选条件。

dart

void main() {


List<String> names = ['Alice', 'Bob', 'Charlie', 'David', 'Eve'];


List<String> filteredNames = names.where((name) => name.length > 4 && name.startsWith('C')).toList();


print(filteredNames); // 输出: ['Charlie', 'David']


}


在这个例子中,我们使用了一个匿名函数作为筛选条件。

集合操作实践

实践 1:筛选出特定范围内的数字

dart

void main() {


List<int> numbers = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100];


List<int> filteredNumbers = numbers.where((number) => number > 50 && number < 80).toList();


print(filteredNumbers); // 输出: [60, 70]


}


实践 2:筛选出特定格式的字符串

dart

void main() {


List<String> emails = ['alice@example.com', 'bobexample.com', 'charlie@example.co.uk', 'david@example'];


List<String> validEmails = emails.where((email) => email.contains('@') && email.contains('.')).toList();


print(validEmails); // 输出: ['alice@example.com', 'charlie@example.co.uk']


}


实践 3:筛选出特定类型的对象

dart

void main() {


List<dynamic> items = [1, 'Alice', true, 3.14, 'Bob'];


List<String> strings = items.where((item) => item is String).toList();


print(strings); // 输出: ['Alice', 'Bob']


}


总结

在 Dart 语言中,集合过滤与数据筛选是处理数据的重要技术。通过使用 `where`、`sort` 等方法,我们可以轻松地从集合中提取出满足特定条件的数据。本文通过一系列示例代码展示了 Dart 集合过滤与数据筛选技术的实践,希望对读者有所帮助。

扩展阅读

- [Dart 官方文档 - 集合操作](https://dart.dev/guides/libraries/library-tourcollections)

- [Dart 官方文档 - List 类](https://dart.dev/api/dart-core/List-class)

- [Dart 官方文档 - Set 类](https://dart.dev/api/dart-core/Set-class)

通过学习和实践这些技术,我们可以更好地利用 Dart 语言处理数据,提高编程效率。