带你读《深入浅出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

相关文章
|
2月前
|
移动开发 前端开发 小程序
Saas短剧源码PHP下载支持H5/小程序/app全开源uniapp项目搭建
本文深度解析一套全开源、无加密的短剧系统(PHP后端+UniApp前端),涵盖架构设计、数据库建模、安全播放、灵活付费、多端适配及二次开发实战,助力开发者低成本、高可控地入局微短剧风口。
|
28天前
|
人工智能 缓存 自然语言处理
阿里云千问Qwen3.7-Max深度实测 智能体能力升级与成本优惠全解析
在AI智能体快速普及的当下,企业与开发者对于大模型的需求早已跳出简单对话、文案生成的基础范畴,更多聚焦于长周期任务自主执行、复杂代码工程处理、办公流程自动化等高阶场景。但长期以来,高端旗舰模型调用成本居高不下,成为众多团队规模化落地AI应用的最大阻碍。
654 0
|
人工智能 API
别问谁更强,GPT-5.5和Opus4.7综合对比
本文不比模型“谁更强”,而是聚焦真实开发场景:GPT-5.5擅长短循环任务——查文档、跑命令、修小bug,省去频繁切换;Opus 4.7强在长交付任务——重构、审查、Agent执行,减少中断催促。选型关键不在跑分,而在任务形状。(239字)
|
域名解析 弹性计算 数据安全/隐私保护
阿里云ECS免费搭建WordPress个人博客网站
阿里云ECS免费搭建WordPress个人博客网站
1170 2
阿里云ECS免费搭建WordPress个人博客网站
|
JavaScript Java API
基于代理和单例模式的 electron 多窗口管理方案
基于代理和单例模式的 electron 多窗口管理方案
1297 0
|
UED 开发者
ArkTS路由跳转与参数传递:深入理解与实践
在HarmonyOS应用开发中,ArkTS作为主要开发语言,其路由跳转和参数传递机制是实现页面间通信的关键。本文深入探讨了ArkTS中的路由跳转基础,包括页面跳转的方式(如pushUrl和replaceUrl)、参数传递的方法,以及如何在实际开发中应用这些知识,帮助开发者提升应用的用户体验和性能。
1195 1
|
网络安全
错误集--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)
2427 0
错误集--NFS报错clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
|
开发框架 JavaScript 算法
了解vue3的基本特性和底层原理
Vue3的底层原理涵盖了响应式系统的Proxy-based实现、组件的模板编译与渲染更新机制、组合式API带来的逻辑组织变革,以及其他关键特性的具体实现。这些原理共同构成了Vue3强大、高效、灵活的现代前端开发框架基础。
1189 2
|
JavaScript 前端开发
js数组排序的方法
js数组排序的方法
572 1
|
Dart 前端开发 开发工具
Flutter-VS-Kotlin-跨平台开发市场的最终霸主究竟花落谁家
Flutter-VS-Kotlin-跨平台开发市场的最终霸主究竟花落谁家