Flutter——最详细(Map)使用教程
Map简介
键值对的集合,您可以使用其关联的键从中检索值。
普通的 HashMap是无序的(不保证顺序),LinkedHashMap 按键插入顺序迭代,而像 SplayTreeMap 这样的排序映射按排序顺序迭代键。
1,添加元素 addEntries()
final planets = <int, String>{1: 'Mercury', 2: 'Venus',3: 'Earth', 4: 'Mars'};
final gasGiants = <int, String>{5: 'Jupiter', 6: 'Saturn'};
final iceGiants = <int, String>{7: 'Uranus', 8: 'Neptune'};
planets.addEntries(gasGiants.entries);
planets.addEntries(iceGiants.entries);
print(planets);
// {1: Mercury, 2: Venus, 3: Earth, 4: Mars, 5: Jupiter, 6: Saturn,
// 7: Uranus, 8: Neptune}
2,更新组元素 update()
final planetsFromSun = <int, String>{1: 'Mercury', 2: 'unknown',3: 'Earth'};
// Update value for known key value 2.
planetsFromSun.update(2, (value) => 'Venus');
print(planetsFromSun); // {1: Mercury, 2: Venus, 3: Earth}final largestPlanets = <int, String>{1: 'Jupiter', 2: 'Saturn',3: 'Neptune'};
// Key value 8 is missing from list, add it using [ifAbsent].
largestPlanets.update(8, (value) => 'New', ifAbsent: () => 'Mercury');
print(largestPlanets); // {1: Jupiter, 2: Saturn, 3: Neptune, 8: Mercury}
3,更新所有元素的值 updateAll()
final terrestrial = <int, String>{1: 'Mercury', 2: 'Venus', 3: 'Earth'};
terrestrial.updateAll((key, value) => value.toUpperCase());
print(terrestrial); // {1: MERCURY, 2: VENUS, 3: EARTH}
4,删除指定的元素 removeWhere
final terrestrial = <int, String>{1: 'Mercury', 2: 'Venus', 3: 'Earth'};
terrestrial.removeWhere((key, value) => value.startsWith('E'));
print(terrestrial); // {1: Mercury, 2: Venus}
5,查找 [key] 的值,如果不存在,则添加新条目。 putIfAbsent
final diameters = <num, String>{1.0: 'Earth'};
final otherDiameters = <double, String>{0.383: 'Mercury', 0.949: 'Venus'};for (final item in otherDiameters.entries) {diameters.putIfAbsent(item.key, () => item.value);
}
print(diameters); // {1.0: Earth, 0.383: Mercury, 0.949: Venus}// If the key already exists, the current value is returned.
final result = diameters.putIfAbsent(0.383, () => 'Random');
print(result); // Mercury
print(diameters); // {1.0: Earth, 0.383: Mercury, 0.949: Venus}
6,将所有键值对添加到此映射中。 addAll
final planets = <int, String>{1: 'Mercury', 2: 'Earth'};
planets.addAll({5: 'Jupiter', 6: 'Saturn'});
print(planets); // {1: Mercury, 2: Earth, 5: Jupiter, 6: Saturn}
7,从映射中删除 [key] 及其关联值(如果存在)。 remove
final terrestrial = <int, String>{1: 'Mercury', 2: 'Venus', 3: 'Earth'};
final removedValue = terrestrial.remove(2); // Venus
print(terrestrial); // {1: Mercury, 3: Earth}
8,从映射中移除所有条目。 clear
final planets = <int, String>{1: 'Mercury', 2: 'Venus', 3: 'Earth'};
planets.clear(); // {}
9,循环应用于映射的每个键值对。 forEach
final planetsByMass = <num, String>{0.81: 'Venus', 1: 'Earth',0.11: 'Mars', 17.15: 'Neptune'};planetsByMass.forEach((key, value) {print('$key: $value');// 0.81: Venus// 1: Earth// 0.11: Mars// 17.15: Neptune
});
10,此映射是否包含给定的 [key]。 containsKey
final moonCount = <String, int>{'Mercury': 0, 'Venus': 0, 'Earth': 1,'Mars': 2, 'Jupiter': 79, 'Saturn': 82, 'Uranus': 27, 'Neptune': 14 };
final containsUranus = moonCount.containsKey('Uranus'); // true
final containsPluto = moonCount.containsKey('Pluto'); // false
11,此映射是否包含给定的 [value]。 containsValue
final moonCount = <String, int>{'Mercury': 0, 'Venus': 0, 'Earth': 1,'Mars': 2, 'Jupiter': 79, 'Saturn': 82, 'Uranus': 27, 'Neptune': 14 };
final moons3 = moonCount.containsValue(3); // false
final moons82 = moonCount.containsValue(82); // true
12,创建一个 Map 实例,其中键和值是从 [iterable] 计算的。 fromIterable
final numbers = <int>[1, 2, 3];
final map = Map<String, int>.fromIterable(numbers,key: (item) => item.toString(),value: (item) => item * item);
print(map); // {1: 1, 2: 4, 3: 9}final numbers = <int>[1, 2, 3];
final map = Map.fromIterable(numbers);
print(map); // {1: 1, 2: 2, 3: 3}
13,创建一个映射,将给定的 [键] 与给定的 [值] 相关联。 fromIterables
final rings = <bool>[false, false, true, true];
final planets = <String>{'Earth', 'Mars', 'Jupiter', 'Saturn'};
final map = Map<String, bool>.fromIterables(planets, rings);
print(map); // {Earth: false, Mars: false, Jupiter: true, Saturn: true}
14,创建一个映射,将给定的 [键] 与给定的 [值] 相关联。 unmodifiable
final planets = <int, String>{1: 'Mercury', 2: 'Venus', 3: 'Earth'};
final unmodifiableMap = Map.unmodifiable(planets);
unmodifiableMap[4] = 'Mars'; // Throws
相关文章:
Flutter——最详细(Map)使用教程
Map简介 键值对的集合,您可以使用其关联的键从中检索值。 普通的 HashMap是无序的(不保证顺序),LinkedHashMap 按键插入顺序迭代,而像 SplayTreeMap 这样的排序映射按排序顺序迭代键。 1,添加元素 addEntri…...
vue的入门第一课
Vue.js是一款流行的JavaScript框架,用于构建交互式Web应用程序。本文将详细介绍Vue.js的基础知识,包括Vue.js的历史、设计模式、构造函数参数、el、data、computed、method、watch以及差值的使用。 Vue.js是什么? Vue.js是一款用于构建用户…...
已解决:conda找不到对应版本的cudnn如何解决?
1.解决方法 配置深度学习环境时,打算安装cudatoolkit11.2和cudnn8.1,当使用conda install cudnn8.0时,却搜索不到这个版本的包,解决方法如下: conda search cudnn -c conda-forge然后就可以使用如下命令进行安装对应…...
大语言模型的学习路线和开源模型的学习材料《二》
第三层 LLMs to Artifact 第一重 langchain 【LLMs 入门实战 —— 十二 】基于 本地知识库 的高效 🤖langchain-ChatGLM 介绍:langchain-ChatGLM是一个基于本地知识的问答机器人,使用者可以自由配置本地知识,用户问题的答案也是基于本地知识生成的。【LLMs 入门实战 ——…...
Flask-SQLAlchemy事件钩子介绍
一、前言 前几天在搜资料的时候无意中看到有介绍SQLAlchemy触发器,当时感觉挺奇怪的,触发器不是数据库层面的概念吗,怎么flask-SQLAlchemy这个ORM框架会有这玩意。 二、SQLAlchemy触发器一个简单例子 考虑到效率博客表中有两个字段…...
C++——list
目录 list介绍 list的函数接口 构造函数 push_front和pop_front push_back和pop_back insert erase 迭代器 front和back size resize empty clear list::sort unique reverse 迭代器的实现 list介绍 list是一种可以在常数范围内在任意位置进行插入和删除的序列…...
【Linux】第九站:make和makefile
文章目录 一、 Linux项目自动化构建工具make/Makefile1.make/makefile工作现象2.依赖关系与依赖方法3.如何清理4.为什么这里我们需要带上clean5.连续的make6.特殊符号 二、Linux下实现一个简单的进度条1.回车换行2.缓冲区3.倒计时的实现 一、 Linux项目自动化构建工具make/Make…...
一文了解什么是WebSocket
WebSocket 允许我们创建“实时”应用程序,与传统 API 协议相比,该应用程序速度更快且开销更少。 一、WebSocket 是如何工作的 按照传统的定义,WebSocket是一种双工协议,主要用于客户端-服务器通信通道。它本质上是双向的&…...
redis是什么
redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。和Memcached类似。redis支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。 一、 基本…...
基于深度学习的人脸专注度检测计算系统 - opencv python cnn 计算机竞赛
文章目录 1 前言2 相关技术2.1CNN简介2.2 人脸识别算法2.3专注检测原理2.4 OpenCV 3 功能介绍3.1人脸录入功能3.2 人脸识别3.3 人脸专注度检测3.4 识别记录 4 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于深度学习的人脸专注度…...
跨境电商的新引擎:崛起的网红经济
随着全球数字化时代的崛起,跨境电商成为了国际贸易的新引擎,而在这个巨大的变革浪潮中,网红经济正在崭露头角,成为这一引擎的有力推动者。在这篇文章中,我们将深入探讨网红经济如何催生跨境电商的新动力,以…...
P2006 赵神牛的游戏 python解法
赵神牛的游戏 题目描述 在 DNF 中,赵神牛有一个缔造者,他一共有 k k k 点法力值,一共有 m m m 个技能,每个技能耗费的法力值为 a i a_i ai,可以造成的伤害为 b i b_i bi,而 boss 的体力值为 n n…...
Unity的碰撞检测(六)
温馨提示:本文基于前一篇“Unity的碰撞检测(五)”继续探讨两个游戏对象具备刚体的BodyType均为Dynamic,但是Collision Detection属性不同的碰撞检测,阅读本文则默认已阅读前文。 (一)测试说明 在基于两个游戏对象都具…...
从前序与中序遍历序列构造二叉树
代码如下,开袋即食 class Solution {private Map<Integer,Integer> map;public TreeNode buildTree(int[] preorder, int[] inorder) {map new HashMap<>();for(int i 0;i<preorder.length;i){map.put(inorder[i],i);}return build(preorder,inord…...
antd5上传图片显示405解决
antd5上传图片,默认使用上传方式会调用本地的接口。 405 Method Not Allowed 状态码 405 Method Not Allowed 表明服务器禁止了使用当前 HTTP 方法的请求。 Upload {...props}beforeUpload{(file) > {//自定义上传图片的逻辑//最后返回falsereturn false }} &…...
生成瑞利信道(Python and Matlab)
channel h k h_k hk is modeled as independent Rayleigh fading with average power loss set as 10^−3 Python import numpy as np# Set the parameters average_power_loss 1e-3 # Average power loss (10^(-3)) num_samples 1000 # Number of fading samples to …...
数据结构Demo——简单计算器
简单计算器 一、项目介绍二、技术使用三、具体代码实现1.前端部分2.后端部分 一、项目介绍 本项目实现了一个通过网页访问的简单计算器,它可以对带括号的加减乘除表达式进行计算并将计算结果返回给用户,并且可以对用户输入的表达式进行合法性判断&#…...
java实现多文件打包压缩,导出zip文件
一.实现多文件打包压缩 Testpublic void testZipFile() throws IOException {String filePath "D:\\导出压缩文件.zip";OutputStream outputStream new FileOutputStream(filePath);try (ZipOutputStream zipOutputStream new ZipOutputStream(outputStream)) {//…...
java-枚举类的使用
public enum MyEnum {ONE("一"),TWO("二"),THREE("三");private final String myNum;MyEnum(String myNum) {this.myNum myNum;}public String getMyEnum() {return myNum;} }调用 MyEnum num MyEnum.ONE; System.err.println(num.getMyEnum…...
Vue插槽
插槽的作用就是在组件中的指定位置传入指定的内容 比如我们有两个相同样式的分类栏,但是里面的内容不同,一个是展示图片,一个是展示ul列表: 这样的情况我们就可以使用插槽来实现。 一、默认插槽 (一)指定…...
iOS越狱终极指南:从A11到A17芯片的完整越狱解决方案
iOS越狱终极指南:从A11到A17芯片的完整越狱解决方案 【免费下载链接】Jailbreak iOS 26.4 - 26, 17 - 17.7.5 & iOS 18 - 18.7.3 Jailbreak Tools, Cydia/Sileo/Zebra Tweaks & Jailbreak News Updates || AI Jailbreak Finder 👇 项目地址: h…...
vi与vim在openEuler中的差异及应用
openEuler两代系统命令差异与原理对比 1. 核心命令体系差异对比 对比维度传统Linux/早期openEuler (Vi模式)现代openEuler (Vim增强模式)核心编辑器vi (Visual Interface) 基础版vim (Vi IMproved) 增强版安装方式通常预装或通过yum install vi需手动安装yum install vim或dn…...
别再让Ubuntu22.04时间错乱了!用hwclock和timedatectl搞定硬件时钟时区的保姆级教程
彻底解决Ubuntu 22.04时间同步问题:硬件时钟与时区管理权威指南你是否曾在双系统切换后发现Ubuntu显示的时间比实际快了8小时?或者每次重启后系统时间都会"跳票"?这些看似小问题背后,隐藏着操作系统与硬件时钟ÿ…...
如何快速掌握BepInEx插件框架:新手的完整避坑指南
如何快速掌握BepInEx插件框架:新手的完整避坑指南 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx BepInEx插件框架是Unity Mono、IL2CPP和.NET框架游戏的强大插件和模组…...
图神经网络与神经算子:革新颗粒系统仿真的AI降阶建模
1. 项目概述:当图神经网络遇上颗粒世界在计算物理和工程仿真领域,颗粒系统(如沙土、粉末、谷物)的模拟一直是个“硬骨头”。传统的离散元法(DEM)虽然能精确刻画每个颗粒的牛顿运动方程和接触力学࿰…...
避坑指南:UE Niagara中设置粒子碰撞事件时,为什么勾选了‘需要固定ID’编译才通过?
UE Niagara粒子碰撞事件深度解析:为什么需要固定ID?在虚幻引擎的Niagara粒子系统中,碰撞事件是实现复杂交互效果的关键机制。许多开发者在初次使用"Generate Collision Event"模块时都会遇到一个令人困惑的现象:明明按照…...
P15729 [JAG 2024 Summer Camp #2] Add Add Add 题解
P15729 [JAG 2024 Summer Camp #2] Add Add Add Link: https://www.luogu.com.cn/problem/P15729 题目描述 给定两个长度为 NNN 的正整数序列 (A1,A2,…,AN)(A_1, A_2, \ldots, A_N)(A1,A2,…,AN) 和 (B1,B2,…,BN)(B_1, B_2, \ldots, B_N)(B1,B2,…,BN)。对于 …...
3个创新方案:重新定义人体运动分析的开源工具
3个创新方案:重新定义人体运动分析的开源工具 【免费下载链接】opensim-core SimTK OpenSim C libraries and command-line applications, and Java/Python wrapping. 项目地址: https://gitcode.com/gh_mirrors/op/opensim-core OpenSim作为一个开源肌肉骨骼…...
Landsat8数据EVI计算踩坑实录:从辐射定标到大气校正,你的公式真的写对了吗?
Landsat8数据EVI计算全流程避坑指南:从数据预处理到公式验证第一次用Landsat8数据计算EVI指数时,我盯着屏幕上那些超出[-1,1]范围的数值发愣——这显然不对劲。作为遥感领域最常用的植被指数之一,EVI的正常值范围应该是-1到1之间。经过整整两…...
2026年丝路新程 Python编程(小学组4-6年级)模拟卷(三)以及答案
2026年丝路新程 Python编程(小学组4-6年级)模拟卷(三) 考试时间:60分钟 总分:100 及格分:60 一、单选题 (共15题,每题5分) 1、丝绸之路商队用列表s记录物资,执行以下代码后,列表s的值是什么? for i in range(2): s=[水囊,干粮,茶叶] s.append(药品) A…...
