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

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

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


Map的主要方法

Map类提供了一些方法来处理和操作键值对。以下是一些常用的Map方法:

 

  • containsKey(key): 检查Map是否包含指定的键
  • containsValue(value): 检查Map是否包含指定的值
  • remove(key): 删除指定的键及其对应的值
  • addAll(other): 将其他Map的键值对添加到当前Map中
  • clear(): 删除Map中的所有键值对

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

var myMap = {
  'key1': 'value1',
  'key2': 'value2',};
print(myMap.containsKey('key1'));  // 输出 trueprint(myMap.containsValue('value3'));  // 输出 false
myMap.remove('key1');print(myMap);  // 输出 {key2: value2}
myMap.addAll({'key3': 'value3', 'key4': 'value4'});print(myMap);  // 输出 {key2: value2, key3: value3, key4: value4}
myMap.clear();print(myMap);  // 输出 {}
  1. Dart中的Set

Dart中的Set是一种无序的、包含唯一项的集合,所有的元素都是唯一的,没有重复项。这意味着无论你尝试将同样的项目添加到Set中多少次,它都只会出现一次。

创建和初始化Set

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

 

// 创建空的Setvar emptySet = {};
// 创建并初始化Setvar initializedSet = {'item1', 'item2', 'item3'};
// 使用Set构造函数创建Setvar setWithConstructor = Set();

 

注意:如果你尝试创建一个空的Set但未指定类型,Dart会创建一个动态类型的Map。因此,为了创建一个空的Set,你需要在创建Set时提供一个类型参数。

添加和删除Set元素

你可以使用addremove方法向Set中添加或删除元素:

 

var mySet = {'item1', 'item2', 'item3'};
mySet.add('item4');print(mySet);  // 输出 {item1, item2, item3, item4}
mySet.remove('item1');print(mySet);  // 输出 {item2, item3, item4}

Set的主要方法

Set类提供了一些方法来处理和操作集合。以下是一些常用的Set方法:

 

  • contains(element): 检查Set是否包含指定的元素
  • union(other): 返回一个新的Set,包含当前Set和另一个Set中所有的元素
  • intersection(other): 返回一个新的Set,包含当前Set和另一个Set中共有的元素
  • difference(other): 返回一个新的Set,包含当前Set中的元素,但不包含另一个Set中的元素

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

var mySet1 = {'item1', 'item2', 'item3'};var mySet2 = {'item2', 'item3', 'item4'};
print(mySet1.contains('item1'));  // 输出 true
var unionSet = mySet1.union(mySet2);print(unionSet);  // 输出 {item1, item2, item3, item4}
var intersectionSet = mySet1.intersection(mySet2);print(intersectionSet);  // 输出 {item2, item3}
var differenceSet = mySet1.difference(mySet2);print(differenceSet);  // 输出 {item1}

 

 

相关文章
|
SQL 分布式计算 大数据
大数据Spark框架概述
大数据Spark框架概述
1012 0
|
JavaScript 前端开发
重装系统,轻松拿下
重装系统,轻松拿下
491 0
|
6月前
|
BI 双11
零代码取数、百万级数据实时导出!让业务决策快人一步
企业常陷“数据困局”:业务急需数据,却苦等排期、审批、开发。 Quick BI自助取数功能让非技术人员三分钟上手——拖拉拽选维度指标,实时生成报表;百万级数据一键带格式下载(Excel/CSV),不乱码、不变形。真正实现“想查就查、即查即得”,释放数据生产力!
|
7月前
|
机器学习/深度学习 弹性计算 负载均衡
阿里云服务器新人优惠购买政策详解:免费试用、优惠券、云服务器活动价格说明
本文梳理最新阿里云针对新用户推出的云产品优惠政策,包括免费试用、特定服务器价格政策、实例折扣及优惠券等内容,同时说明相关申请流程与适用范围,为新用户了解并使用优惠提供参考。
|
Kubernetes 监控 搜索推荐
在Rancher平台上部署K8S集群的方法
以上就是在Rancher平台上部署Kubernetes集群的方法,这个过程就像一次航行,惊险而又充满乐趣。希望这篇导航能够帮助您在容器化的海洋中畅行无阻!
909 13
|
存储 监控 Java
合理设置JVM堆大小
合理设置JVM堆大小
843 4
|
网络协议 开发工具 git
解决 git 报错 “fatal: unable to access ‘https://github.com/.../.git‘: Recv failure Connection was rese
在使用 Git/Git小乌龟 进行代码管理的过程中,经常会遇到各种各样的问题,其中之一就是在执行 git clone 或 git pull 等操作时出现 “fatal: unable to access ‘https://github.com/…/.git’: Recv failure Connection was reset” 的报错。这个问题通常是由网络连接问题或代理设置不正确导致的。在我的个人使用经验中,我亲自尝试了四种方法,它们都能够有效地解决这个报错。个人比较推荐方法二。
9203 1
|
设计模式
代码复用
代码复用
539 3
|
编解码 前端开发 安全
基于CW32F030单片机的便携式多功能测试笔
一、产品背景 在日常的硬件调试工作中,我们最常使用的仪器仪表可能就是万用表了,虽然万用表号称“万用”,但大部分时候,我们需要使用到的功能无非是电压测量和通断测量。 作为调试的“得力干将”,万用表有时候也会存在一些缺点和局限性,比如:体积较大不便于携带、无法直接反应逻辑电平情况而需要自己判断、不同型号万用表的通断档位阈值电阻不同等等,而最令人头大的,莫过于万用表的COM表笔通常需要接地,而pcb上可能没有直插孔位可以方便的固定笔尖,因此不得不用手辅助“黑表笔“,影响操作灵活性。 二、产品构思 对于这支测试笔,我对他的功能有以下期望: 1、电压测量+阈值判断,阈值电平可以根据需求自行设定
380 0
基于CW32F030单片机的便携式多功能测试笔
|
Java
【正则秘籍】四大匹配模式:揭秘文本处理的终极武器!
【8月更文挑战第25天】本文以问答形式深入介绍了正则表达式中的四种关键匹配模式:贪婪匹配、非贪婪匹配、先行断言与后行断言。通过具体的Java示例代码,展示了每种模式的工作原理及应用场景。贪婪匹配适用于提取最长匹配串,而非贪婪匹配则用于获取最短匹配。先行断言确保匹配后的内容符合特定模式,而后行断言则检查匹配前的内容不符合指定模式。了解并熟练运用这些模式对于提高文本处理能力至关重要。
339 2