带你读《深入浅出Dart》六、Dart中的集合类型(1)

简介: 带你读《深入浅出Dart》六、Dart中的集合类型(1)

六、Dart中的集合类型

Dart 提供了一系列的集合类型,其中包括 Map 和 Set。本文将简要介绍 Dart 中的 Map 和 Set,以及如何在 Dart 中使用这两种数据结构。

1.Dart中的List

Dart中的List是一种重要的数据类型,可以存储一系列有序的元素,元素的类型可以是任意类型,包括数字,字符串,布尔值,对象,甚至是其他List。它类似于其他编程语言中的数组,但具有更多的内置方法和功能。

创建和初始化List

在Dart中,你可以通过几种不同的方式创建和初始化List:

 

// 创建空列表var emptyList = [];
// 创建具有几个初始元素的列表var initializedList = [1, 2, 3, 4, 5];
// 使用List构造函数创建列表var listWithConstructor = List.filled(5, 0); // 创建一个包含5个0的列表

访问和修改List元素

你可以使用索引(从0开始)来访问和修改List中的元素:

 

var myList = [1, 2, 3];print(myList[0]);  // 输出1
myList[0] = 10;print(myList[0]);  // 输出10

List的主要方法

List类提供了一些方法来处理和操作列表。以下是一些常用的List方法:

  • add(element): 在List的末尾添加一个元素
  • insert(index, element): 在指定索引处插入一个元素
  • remove(element): 删除列表中首个匹配的元素
  • removeAt(index): 删除指定索引处的元素
  • indexOf(element): 查找指定元素的索引,如果元素不存在,则返回-1
  • contains(element): 检查列表是否包含指定元素,如果包含则返回true,否则返回false
  • sort([compareFunction]): 对List的元素进行排序,可以提供一个可选的比较函数

以下是这些方法的使用示例:

var myList = [1, 2, 3];
myList.add(4);print(myList);  // 输出 [1, 2, 3, 4]
myList.insert(0, 0);print(myList);  // 输出 [0, 1, 2, 3, 4]
myList.remove(2);print(myList);  // 输出 [0, 1, 3, 4]
myList.removeAt(0);print(myList);  // 输出 [1, 3, 4]
print(myList.indexOf(3));  // 输出 1
print(myList.contains(2));  // 输出 false
myList.sort();print(myList);  // 输出 [1, 3, 4]

2.Dart中的Map

Dart中的Map是一种无序的键值对集合,其中的键和值都可以是任何类型。它是一个动态集合,这意味着你可以在运行时向其中添加或删除键值对。Map在很多场景下都很有用,例如,当你需要通过一种方式(键)来查找或访问数据(值)时。

创建和初始化Map

在Dart中,你可以通过以下几种方式创建和初始化Map:

 

// 创建空的Mapvar emptyMap = {};
// 创建并初始化Mapvar initializedMap = {
  'key1': 'value1',
  'key2': 'value2',
  'key3': 'value3',};
// 使用Map构造函数创建Mapvar mapWithConstructor = Map();

访问和修改Map元素

你可以通过键来访问和修改Map中的值:

var myMap = {
  'key1': 'value1',
  'key2': 'value2',};
print(myMap['key1']);  // 输出 'value1'
myMap['key1'] = 'new value1';print(myMap['key1']);  // 输出 'new value1'


带你读《深入浅出Dart》六、Dart中的集合类型(2)https://developer.aliyun.com/article/1349071?groupCode=tech_library

相关文章
|
安全 前端开发 iOS开发
钉钉里微应用ios 底部安全区域的颜色怎么修改?
钉钉里微应用ios 底部安全区域的颜色怎么修改?
444 5
|
定位技术 开发工具 开发者
为了让外卖小哥在地图里开上火箭🚀我用FLutter自定义了地图
花了五天时间,用Flutter自定义地图是什么体验?外卖小哥都开上火箭了?什么?我被女朋友赶出家门啦?欢迎观看被女友赶出家门之开火箭送外卖篇~
|
9月前
|
API C# 图形学
Unity调用Windows弹出确认框
在 Unity 中调用 Windows 弹出确认框,可通过 Windows API 或 .NET 框架实现。使用 Windows API 的方式是通过 P/Invoke 技术调用 MessageBox 函数,创建模态对话框。代码示例展示了如何在应用退出时弹出确认框,用户选择“确定”则退出游戏。此方法也适用于 ALT+F4 触发的退出确认。
|
JavaScript Java API
基于代理和单例模式的 electron 多窗口管理方案
基于代理和单例模式的 electron 多窗口管理方案
1041 0
|
11月前
|
存储 JSON 开发工具
三、HarmonyOS NEXT应用开发:ArkTS工程目录结构(Stage模型)
本文介绍了HarmonyOS NEXT应用开发中ArkTS工程的目录结构(Stage模型),包括AppScope、entry、hvigor、oh_modules等主要目录及其作用。重点解析了entry目录下的src > main > resources目录结构,详细说明了base、限定符目录和rawfile的作用,以及如何引用资源文件。
693 1
|
UED 开发者
ArkTS路由跳转与参数传递:深入理解与实践
在HarmonyOS应用开发中,ArkTS作为主要开发语言,其路由跳转和参数传递机制是实现页面间通信的关键。本文深入探讨了ArkTS中的路由跳转基础,包括页面跳转的方式(如pushUrl和replaceUrl)、参数传递的方法,以及如何在实际开发中应用这些知识,帮助开发者提升应用的用户体验和性能。
935 1
|
存储 编解码 算法
Lottie 动画文件的压缩技术与策略
10月更文挑战第16天】综上所述,Lottie 动画文件的压缩是一项重要的工作。通过合理选择压缩方法和策略,结合适当的工具和技术,可以在保证动画质量的前提下,有效地减小文件的大小,提升应用的性能和用户体验。
539 1
|
前端开发 UED 开发者
Flutter笔记:Widgets Easier组件库(1)使用各式边框
Flutter笔记:Widgets Easier组件库(1)使用各式边框
444 0
|
网络安全
错误集--NFS报错clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
错误集--NFS报错clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
2087 0
错误集--NFS报错clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
uniapp 制作 wgt 包(用于 app 的热更新)
uniapp 制作 wgt 包(用于 app 的热更新)
1801 0