Kotlin Dart速来系列2,集合:列表List,集合Map,集合Set,枚举enum

在Dart中,集合是一种用于存储和操作多个数据项的数据结构。本篇博客将详细介绍Dart中常用的集合类型,包括列表(List)、映射(Map)、集(Set)以及枚举(enum)。我们将深入探讨它们的是什么、好处、怎么用,并提供丰富的代码例子说明,同时还介绍在开发中的使用场景和注意事项。

1. 列表(List)

1.1 是什么?

列表是一种有序的集合,用于存储多个数据项。在Dart中,列表使用List类来表示。

1.2 好处

  • 列表保持元素的插入顺序,允许重复元素的存在。
  • 列表提供了丰富的操作方法,如添加元素、删除元素、访问元素、查找元素等。

1.3 怎么用?

列表可以使用字面量或构造函数来创建,并且可以根据需要添加、访问和修改列表中的元素。

例子

List<int> numbers = [1, 2, 3, 4, 5]; // 创建整数类型的列表
List<String> names = ['Alice', 'Bob', 'Charlie']; // 创建字符串类型的列表

numbers.add(6); // 向列表末尾添加元素
names.insert(1, 'David'); // 在索引1处插入元素

int removedNumber = numbers.removeLast(); // 移除并返回最后一个元素
String removedName = names.removeAt(0); // 移除并返回索引0处的元素

bool containsNumber = numbers.contains(3); // 检查列表是否包含元素3
int indexOfName = names.indexOf('Charlie'); // 查找元素'Charlie'的索引

print(numbers); // 输出:[1, 2, 3, 4, 5, 6]
print(names); // 输出:['David', 'Bob', 'Charlie']

1.4 使用时需要注意什么?

  • Dart中的列表是动态的,可以根据需要自动调整大小。
  • 可以使用泛型来限制列表中的元素类型,例如List<int>表示整数类型的列表。
  • 列表使用0-based索引,即第一个元素的索引为0。

在开发中的使用场景

  • 列表常用于存储和处理多个相关的数据项,如用户列表、商品列表等。
  • 列表可以通过索引访问和修改元素,适用于需要按照顺序处理数据的场景。
  • 列表还提供了许多内置方法和操作符,如排序、过滤、映射等,使数据处理更加方便。

与Java和Kotlin相比:

  • 在Java和Kotlin中,列表的声明和使用与Dart类似,分别为List<Integer>(Java)和List<Int>(Kotlin)。
  • Java和Kotlin提供了丰富的API和方法来操作和处理列表。

2. 映射(Map)

2.1 是什么?

映射是一种键值对的集合,每个键对应一个值。在Dart中,映射使用Map类来表示。

2.2 好处

  • 映射提供了高效的键值对查找和访问。
  • 可以通过键快速找到对应的值,避免遍历整个集合进行查找。

2.3 怎么用?

映射可以使用字面量或构造函数来创建,并且可以根据需要添加、访问和修改映射中的键值对。

代码

Map<String, int> studentScores = {
  'Alice': 95,
  'Bob': 87,
  'Charlie': 92,
}; // 创建字符串键和整数值的映射

studentScores['David'] = 90; // 添加新的键值对

int aliceScore = studentScores['Alice']; // 根据键获取值

studentScores.remove('Bob'); // 移除键为'Bob'的键值对

bool containsCharlie = studentScores.containsKey('Charlie'); // 检查映射中是否包含键'Charlie'

print(studentScores); // 输出:{'Alice': 95, 'Charlie': 92, 'David': 90}

2.4 使用时需要注意什么?

  • Dart中的映射使用键值对存储数据,键必须是唯一的,而值可以重复。
  • 可以使用泛型来限制映射中键和值的类型,例如Map<String, int>表示键为字符串类型、值为整数类型的映射。
  • 注意在使用键获取值时,如果映射中不存在对应的键,则会返回null

在开发中的使用场景

  • 映射常用于存储和查询具有唯一键的数据项,如用户信息、配置参数等。
  • 映射提供了快速的键值对查找和访问,适用于需要通过键快速找到对应值的场景。
  • 映射还可用于处理和组织复杂的数据结构,如图形结构、数据库查询结果等。

与Java和Kotlin相比:

  • 在Java和Kotlin中,映射的声明和使用与Dart类似,分别为Map<String, Integer>(Java)和Map<String, Int>(Kotlin)。
  • Java和Kotlin提供了丰富的API和方法来操作和处理映射。

3. 集合Set

3.1 是什么?

集合是一种无序且不重复的数据结构,用于存储一组唯一的数据项。在Dart中,集合使用Set类来表示。

3.2 好处

  • 集合提供了高效的元素查找和去重功能。
  • 集合中的元素是唯一的,可以用于快速判断元素是否存在于集合中。

3.3 怎么用?

可以使用字面量或构造函数来创建集合,并且可以根据需要添加、访问和修改集合中的元素。

Set<int> numbers = {1, 2, 3, 4, 5}; // 使用字面量创建整数类型的集合
Set<String> names = {'Alice', 'Bob', 'Charlie'}; // 使用字面量创建字符串类型的集合

// 使用构造函数创建空集合
Set<double> grades = Set();
grades.add(3.5); // 向集合中添加元素
grades.addAll([4.0, 3.2, 3.8]); // 向集合中添加多个元素

代码

Set<int> numbers = {1, 2, 3, 4, 5}; // 创建整数类型的集合
Set<String> names = {'Alice', 'Bob', 'Charlie'}; // 创建字符串类型的集合

numbers.add(6); // 向集合中添加元素
names.remove('Bob'); // 从集合中移除元素

bool containsAlice = numbers.contains(3); // 检查集合中是否包含元素3

print(numbers); // 输出:{1, 2, 3, 4, 5, 6}
print(names); // 输出:{'Alice', 'Charlie'}

3.4 使用时需要注意什么?

  • Dart中的集合保持元素的插入顺序,并且集合中的元素是唯一的,不允许重复。
  • 集合使用哈希值来确定元素的唯一性和相等性,因此在使用自定义对象时,需要正确实现对象的hashCode==方法。

在开发中的使用场景

  • 集合常用于去重和快速判断元素是否存在的场景。
  • 集合还可以用于处理需要唯一性的数据项集合,如标签集合、分类集合等。

与Java和Kotlin相比:

  • 在Java和Kotlin中,集合的声明和使用与Dart类似,分别为Set<Integer>(Java)和Set<Int>(Kotlin)。
  • Java和Kotlin提供了丰富的API和方法来操作和处理集合。

4. 枚举enum

4.1 是什么?

枚举是一种特殊的数据类型,用于定义一组命名的常量值。在Dart中,枚举使用enum关键字来定义。

4.2 好处

  • 枚举提供了一种清晰明确的方式来定义一组相关的常量。
  • 枚举常量可以更好地描述代码中的意图,提高代码的可读性。

4.3 怎么用?

可以使用enum关键字定义枚举类型,并列出所有的枚举常量。

enum Weekday {
  monday,
  tuesday,
  wednesday,
  thursday,
  friday,
  saturday,
  sunday,
}

丰富的代码例子说明

enum Weekday {
  monday,
  tuesday,
  wednesday,
  thursday,
  friday,
  saturday,
  sunday,
}

Weekday today = Weekday.tuesday; // 声明一个枚举变量,并赋予一个枚举常量

if (today == Weekday.monday || today == Weekday.friday) {
  print('It's a workday!');
} else if (today == Weekday.saturday || today == Weekday.sunday) {
  print('It's a weekend!');
} else {
  print('It's a weekday!');
}

4.4 使用时需要注意什么?

  • 枚举常量是静态不可变的,不能在运行时修改。
  • 枚举常量在作用域内是唯一的,可以直接通过枚举类型和常量名称进行访问。

在开发中的使用场景

  • 枚举常用于定义一组相关的常量,如星期几、状态、选项等。
  • 枚举常量可以在代码中更好地描述和表示一组预定义的取值。

与Java和Kotlin相比:

  • 在Java和Kotlin中,枚举的声明和使用与Dart类似,分别为enum关键字(Java)和enum class关键字(Kotlin)。
  • Java和Kotlin提供了更多的枚举功能和方法,如枚举属性、方法等。

小结

  • 列表(List)有序的集合,允许重复元素。适用于需要按照顺序处理数据的场景,如存储用户评论、商品列表等。
  • 映射(Map)是键值对的集合,每个键对应一个值。适用于存储和查询具有唯一键的数据项,如用户信息、配置参数等。
  • 集合(Set)是无序且不重复的集合。适用于去重和快速判断元素是否存在的场景,如标签集合、分类集合等。
  • 枚举(enum)是一种用于定义一组命名的常量值的数据类型。适用于定义一组相关的常量,如星期几、状态、选项等。

最后

如果想要成为架构师或想突破20~30K薪资范畴,那就不要局限在编码,业务,要会选型、扩展,提升编程思维。此外,良好的职业规划也很重要,学习的习惯很重要,但是最重要的还是要能持之以恒,任何不能坚持落实的计划都是空谈。

如果你没有方向,这里给大家分享一套由阿里高级架构师编写的《Android八大模块进阶笔记》,帮大家将杂乱、零散、碎片化的知识进行体系化的整理,让大家系统而高效地掌握Android开发的各个知识点。
img
相对于我们平时看的碎片化内容,这份笔记的知识点更系统化,更容易理解和记忆,是严格按照知识体系编排的。

欢迎大家一键三连支持,若需要文中资料,直接扫描文末CSDN官方认证微信卡片免费领取↓↓↓

PS:群里还设有ChatGPT机器人,可以解答大家在工作上或者是技术上的问题
图片

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值