dart map 转list_Dart语言基础Map、List、Set操作合辑

本文详细介绍了Dart语言中Map和List的基本操作,包括如何创建、修改和遍历。Map提供了多种创建方式,如LinkedHashMap、HashMap等,并展示了如何从Iterable转换为Map。List则讲解了非固定长度、固定长度以及元素类型固定的创建方法,以及遍历和获取List中数据的各种方式。
摘要由CSDN通过智能技术生成

题记

—— 执剑天涯,从你的点滴积累开始,所及之处,必精益求精,即是折腾每一天。

Flutter完全采用了Dart语言,所以分析Dart语言基础相当于是学习了Flutter语言基础、

在Dart中,Map用来存储对像类型的数据,List与Set用来存储数组类型的数据。

本文是来描述 Map 、List 、Set中数据的添加 、修改、循环遍历查询的。

1 Dart中的Map

Map用来保存key-value键值对的数据集合, 与Object-C中所说的字典一至,分为无序的HashMap、key的插入顺序的LinkedHashMap、按key的排序顺序的SplayTreeMap,Map的创建实例如下:

// 创建一个Map实例,默认实现是LinkedHashMap。

Map()

// 创建一个LinkedHashMap实例,包含other中的所有键值对。

Map.from(Map other)

// 创建一个Map实例,其中Key和Value由iterable的元素计算得到。

Map.fromIterable(Iterable iterable, {K key(element), V value(element)})

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

Map.fromIterables(Iterable keys, Iterable values)

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

Map.identity()

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

Map.unmodifiable(Map other)

然后在实际项目中结合数据创建Map实例,创建一个空的Map代码如下:

// 创建一个Map实例, 插入顺序进行排列 默认无数据

var dic = new Map();

print(dic); // {}

// 创建一个空的Map, Map允许null作为key

var dic5 = new Map.identity();

print(dic5); //{}

创建有一个有初始值的Map,代码如下:

// 根据一个Map创建一个新的Map, 插入顺序进行排列

var dic1 = new Map.from({'name': '张三'});

print(dic1); // {name: 张三}

// 根据List创建Map, 插入顺序进行排列

List list = [1, 2, 3];

// 使用默认方式, key和value都是数组对应的元素

var dic2 = new Map.fromIterable(list);

print(dic2); // {1: 1, 2: 2, 3: 3}

// 设置key和value的值

var dic3 = new Map.fromIterable(list, key: (item) => item.toString(), value: (item) => item * item);

print(dic3); // {1: 1, 2: 4, 3: 9}

// 创建一个不可修改、基于哈希值的Map

var dic6 = new Map.unmodifiable({'name': 张三});

print(dic6); // {name: 张三}

根据List数据来创建Map,代码如下:

// 两个数组映射一个字典, 插入顺序进行排列

List keys = ['name', 'age'];

var values = [张三, 20];

// 如果有相同的key值, 后面的值会覆盖前面的值

var dic4 = new Map.fromIterables(keys, values);

print(dic4); // {name: 张三, age: 20}

对于Map来讲,初始化创建时可以赋值也可以是空的,当创建的可变的Map数据集合时,在实际开发中往往会根据不同的操作来修改不同的数据,如下:

// 根据一个Map创建一个新的Map, 插入顺序进行排列

// 在这里通过泛型指定 了 Map中的key的类型为 String类型 value是动态的

Map dic1 = new Map.from({'name': '张三'});

print(dic1); // {name: 张三}

//修改name的值

dic1['name'] = '李四';

//向Map中添加新的键值对数据

dic1['age'] = 23;

然后获取Map中的数据如下操作;

//根据key获取对应的值

String name = dic1= dic1['name'];

///遍历获取Map中所有的数据

dic1.forEach((key, value) {

print("${key} is ${value}");

});

2 Dart中的List

对于List与Set来讲,都是用来存储数组类型数据,区别是Set不可保存重复数据,也就是说Set中的数据具有唯一性,在这里只分析List,Set与List的使用方法一至,使用代码如下:

// 创建非固定长度的Lsit

var testList = List();

// 也可以 List testList = List();

print(testList.length); // 0

// 创建固定长度的List

var fixedList = List(4);

print(testList.length); // 4

///向Lsit中添加数据

testList.add("hello");

testList.add(123);

// 创建元素类型固定的List

var typeList = List(); // 只能添加字符串类型的元素

typeList.add("张三"); // 正确

typeList.add(1); // 错误。类型不正确

// 直接赋值 创建List

var numList = [1, 2, 3];

然后获取List中的数据需要通过索引来获取,List中保存的数据索引从0开始计数,代码如下:

///方式一 遍历获取List中的所有数据

testList.forEach((value) {

//value 就是List中对应的值

});

///方式二 遍历获取List中的所有的数据

for(int i=0;i

///根据索引获取List中的数据

var value = testList[i];

}

//方式三

//while+iterator迭代器遍历,类似Java中的iteator

while(testList.iterator.moveNext()) {

//获取对应的值

var value = testList.iterator.current;

}

//方式四 增强for循环

//for-in遍历

for (var value in testList) {

//value 就是List中对应的值

}

完毕

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值