Flutter基础语法(二)字典Map

news/2024/11/22 6:19:51/

Flutter基础

第二章 Flutter字典Map的使用


文章目录

  • Flutter基础
  • 前言
  • 一、字典是什么?
  • 二、字典的定义
    • 1.直接赋值
    • 2.先声明后添加
    • 3.of创建方法
    • 4.fromEntries创建方法
    • 5.identity创建方法
    • 6.unmodifiable创建方法
    • 7.fromIterables创建方法
  • 三、字典的常用属性
    • 1.字典长度
    • 2.是否为空
    • 3.是否不为空
    • 4.哈希值
    • 5.运行时类型
    • 6.toList
    • 7.根据key取值
    • 8.根据key赋值
  • 四、字典(map)方法
    • 1.添加元素
    • 2.putIfAbsent方法
    • 3.是否包含指定的key
    • 4.是否包含指定的value
    • 5.遍历
    • 6.toString()转成字符串
    • 7.remove()方法
    • 8.clear()方法
  • 总结


前言

在使用flutter开发已经有一段时间了,在之前都是快速开发,没有时间去复盘自己的知识体系,现在就从flutter的基本语法开始,一步步分析flutter涉及到的细节问题,希望对你有所帮助。


一、字典是什么?

  • 字典(map)是一种特殊的数据结构:一种元素对(pair)的无序集合,pair 的一个元素是 key,对应的另一个元素是 value,所以这个结构也称为关联数组或字典。这是一种快速寻找值的理想结构:给定 key,对应的 value 可以迅速定位。

二、字典的定义

1.直接赋值

dart使用var关键字声明参数,会自动推断类型。
字典对应的key和value可以设置不同的类型。

var map = {'ziDian': '字典', 'shuZhu': '数组'};
Map<String, int> map1 = {'key1': 111, 'key2': 123};
print("打印==$map");//打印=={ziDian: 字典, shuZhu: 数组}
print("打印==$map1");//打印=={key1: 111, key2: 123}

2.先声明后添加

Map map = {};
map['key1'] = 66;
map['key2'] = 88;
print('打印==$map');//打印=={key1: 66, key2: 88}

3.of创建方法

Map map = {};
map['key1'] = 66;
map['key2'] = 88;
print('打印map1==$map'); //打印=={key1: 66, key2: 88}
var map1 = Map.of(map);
print('打印map1==$map1'); //打印map1=={key1: 66, key2: 88}

4.fromEntries创建方法

Map map = {};
map['key1'] = 66;
map['key2'] = 88;
print('打印map1==$map'); //打印=={key1: 66, key2: 88}
var map1 = Map.fromEntries(map.entries);
print('打印map1==$map1'); //打印map1=={key1: 66, key2: 88}

5.identity创建方法

使用默认实现LinkedHashMap创建一个严格的Map

var map1 = Map.identity();
map1['ziDian'] = '字典';
print('打印==$map1'); //打印=={ziDian: 字典}

6.unmodifiable创建方法

创建一个不可修改、基于哈希值的Map,包含other所有的项

var map = {'ziDian': '字典', 'shuZhu': '数组'};
var map1 = Map.unmodifiable(map);
print("打印==$map1"); //打印=={ziDian: 字典, shuZhu: 数组}

7.fromIterables创建方法

将指定的keys和values关联,创建一个Map实例

List<String> keys = ['ziDian', 'shuZhu'];
List<String> values = ['字典', '数组'];
var map = Map.fromIterables(keys, values);
print("打印==$map"); //打印=={ziDian: 字典, shuZhu: 数组}

三、字典的常用属性

1.字典长度

var map = {'ziDian': '字典', 'shuZhu': '数组'};
print('打印==${map.length}'); //打印==2

2.是否为空

.isEmpty为空true 不为空false

var map = {'ziDian': '字典', 'shuZhu': '数组'};
print("是否为空==${map.isEmpty}");//是否为空==falsevar map1 = {};
print("是否为空==${map1.isEmpty}");//是否为空==true

3.是否不为空

.isNotEmpty 为空false 不为空true

var map = {'ziDian': '字典', 'shuZhu': '数组'};
print("是否不为空==${map.isNotEmpty}");//是否不为空==truevar map1 = {};
print("是否不为空==${map1.isNotEmpty}");//是否不为空==false

4.哈希值

var map = {'ziDian': '字典', 'shuZhu': '数组'};
print("打印==${map.hashCode}"); //打印==986719720

5.运行时类型

var map = {'ziDian': '字典', 'shuZhu': '数组'};
print("打印==${map.runtimeType}"); //打印==_InternalLinkedHashMap<String, String>

6.toList

返回所有的keys或返回所有的values

var map = {'ziDian': '字典', 'shuZhu': '数组'};
print("打印==${map.keys.toList()}"); //打印==[ziDian, shuZhu]
print("打印==${map.values.toList()}");//打印==[字典, 数组]

7.根据key取值

var map = {'ziDian': '字典', 'shuZhu': '数组'};
print("打印==${map['ziDian']}"); //打印==字典

8.根据key赋值

var map = {'ziDian': '字典', 'shuZhu': '数组'};
map['ziDian'] = '小明';
print("打印==$map"); //打印=={ziDian: 小明, shuZhu: 数组}

四、字典(map)方法

1.添加元素

添加元素(如果key已存在,则是更新value)

var map = {'ziDian': '字典', 'shuZhu': '数组'};
map['ziFu'] = '字符';
map['ziDian'] = '其他';
print('打印==$map'); //打印=={ziDian: 其他, shuZhu: 数组, ziFu: 字符}var map = {'ziDian': '字典', 'shuZhu': '数组'};
map['string'] = '字符串';
map.addAll({'int': '整型'});
print("打印==$map"); //打印=={ziDian: 字典, shuZhu: 数组, string: 字符串, int: 整型}

2.putIfAbsent方法

添加(如果key不存在,则添加,否则,不添加)

var map = {'ziDian': '字典', 'shuZhu': '数组'};
map.putIfAbsent('ziDian', () => '其他');
print('打印==$map'); //打印=={ziDian: 字典, shuZhu: 数组}

3.是否包含指定的key

var map = {'ziDian': '字典', 'shuZhu': '数组'};
print("打印==${map.containsKey('ziDian')}"); //打印==true

4.是否包含指定的value

var map = {'ziDian': '字典', 'shuZhu': '数组'};
print("打印==${map.containsValue('字典')}"); //打印==true

5.遍历

var map = {'ziDian': '字典', 'shuZhu': '数组'};
map.forEach((key, value) {print('key = $key, value = $value');
});
//key = ziDian, value = 字典
//key = shuZhu, value = 数组

6.toString()转成字符串

var map = {'ziDian': '字典', 'shuZhu': '数组'};
print("打印==${map.toString()}"); //打印=={ziDian: 字典, shuZhu: 数组}

7.remove()方法

删除键值对, 返回删除key对应的value值, 没有则返回null

var map = {'ziDian': '字典', 'shuZhu': '数组'};
print("打印==${map.remove('ziDian')}"); //打印==字典
print("打印==${map.remove('code')}"); //打印==null

8.clear()方法

删除所有的键值对

var map = {'ziDian': '字典', 'shuZhu': '数组'};
print("打印==${map.clear()}"); //打印=={}

总结

以上就是今天要讲的内容,本文仅仅简单介绍了字典的使用,而字典(map)提供了大量能使我们快速便捷地处理数据的函数和方法。希望文章对你有所帮助,后续继续完善。


http://www.ppmy.cn/news/20841.html

相关文章

【自然语言处理】【大模型】PaLM:基于Pathways的大语言模型

PaLM&#xff1a;基于Pathways的大语言模型《PaLM: Scaling Language Modeling with Pathways》论文地址&#xff1a;https://arxiv.org/pdf/2204.02311.pdf 相关博客 【自然语言处理】【大模型】PaLM&#xff1a;基于Pathways的大语言模型 【自然语言处理】【chatGPT系列】大语…

不平衡数据集的建模的技巧和策略

不平衡数据集是指一个类中的示例数量与另一类中的示例数量显著不同的情况。 例如在一个二元分类问题中&#xff0c;一个类只占总样本的一小部分&#xff0c;这被称为不平衡数据集。类不平衡会在构建机器学习模型时导致很多问题。 不平衡数据集的主要问题之一是模型可能会偏向多…

Mac 打开JD-GUI报错:ERROR launching ‘JD-GUI‘

目录一、JD-GUI下载二、JD-GUI报错信息三、解决方案1、查找JD-GUI包内容2、修改universalJavaApplicationStub.sh文件一、JD-GUI下载 JD-GUI下载地址&#xff1a;https://github.com/java-decompiler/jd-gui/releases 二、JD-GUI报错信息 Mac系统版本&#xff1a;11.3 JD-GUI…

【数据结构初阶】第三篇——单链表

链表的概念及其结构 初始化链表 打印单链表 增加结点 头插 尾插 在给定位置之前插入 在给定位置之后插入 删除结点 头删 尾删 删除给定位置的结点 查找数据 修改数据 链表的概念及其结构 基本概念 链表是一种物理存储结构上非连续&#xff0c;非顺序的存储结构&a…

解决问题的方法论

概述 解决问题的能力是职场中最重要的能力之一&#xff0c;如何逻辑清晰、效率满满的解决问题&#xff0c;可参考以下4个步骤。 一、准确的界定问题 找出真正的问题。 准确的界定问题&#xff0c;避免被表面现象所迷惑。 《麦肯锡工具》中&#xff0c;给出一个标准的步骤&am…

电子技术——基本MOS放大器配置

电子技术——基本MOS放大器配置 上一节我们探究了一种MOS管的放大器实现&#xff0c;其实MOS放大器还有许多变种配置&#xff0c;在本节我们学习最基本的三大MOS放大器配置&#xff0c;分别是共栅极&#xff08;CG&#xff09;、共漏极&#xff08;CD&#xff09;、共源极&…

易控智驾:用最“接地气”的自动驾驶,写一本“矿区修炼手册”

CES2023刚刚在拉斯维加斯闭幕&#xff0c;作为行业风向标&#xff0c;本届展会上元宇宙、汽车技术等重要科技依然是大亮点。宝马、英特尔等厂商&#xff0c;依然带来了有趣的消费级产品&#xff0c;但也有更多的工业与制造业产品、方案&#xff0c;带着更多的科技智能属性脱颖而…

【C++算法图解专栏】一篇文章带你入门二分算法

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 &#x1f4e3;专栏定位&#xff1a;为 0 基础刚入门数据结构与算法的小伙伴提供详细的讲解&#xff0c;也欢迎大佬们一起交流~ &#x1f4da;专栏地址&#xff1a;https://blog.csdn.net/Newin…