Dart学习笔记 List Set Map详解

本文详细介绍了Dart编程中List、Set和Map的数据结构及其常用属性和方法。List的难点在于map()和where()方法,map()用于将列表元素通过匿名函数转换,where()则返回满足条件的元素。Set主要用于去除重复元素,Map则是存储无序键值对。文章还展示了如何使用这些数据结构进行操作,如添加、删除、遍历等,并提供了实例代码演示。
摘要由CSDN通过智能技术生成

List Set Map详解

List中常用的属性和方法

常用属性:
  • length 长度
  • reversed 翻转 (注意这是个属性,属性值为字符串)
  • isEmpty 是否为空
  • isNotEmpty 是否为不空
常用方法:
  • List.filled(num,value) (静态方法, 用num个value创建一个新的List)
  • add 增加一个数组元素
  • addAll(List) 拼接数组
  • indexOf 查找,查找到就返回index,没有返回-1
  • remove 删除传入具体值
  • removeAt 删除传入索引值
  • fillRange(start, end, value) 用value替换指定范围的元素(包括起始索引,不包括终止索引), 返回值为void
  • insert(index,value) 指定元素之后插入
  • insertAll(index,List) 指定元素之后插入List
  • toList() 其他类型转化成List
  • join(separator) List转换成字符串, 每个元素间用separator来分隔
  • split(separator) 字符串转化成List, 默认每个元素间用separator来分隔
  • forEach 遍历
  • map
  • where
  • any
  • every
难点详解

map()

map方法接受一个匿名函数作为参数,每次迭代时将value作为参数执行匿名方法,并将返回值放入新的可迭代对象中,最后返回一个这个可迭代对象
在list的map对象中,传入参数value默认为元素的值

  List myList = [1,3,4];
  var newList=myList.map((value){
    return value*2;
  });

where()

类似于map方法,但返回的为所有满足条件的值

  List myList = [1,3,4,5,7,9];
  var newList=myList.where((value){
    return value>4;
  });
突发奇想

如果将where的示例的代码中的where替换为map会发生什么呢?

  List myList = [1,3,4,5,7,9];
  var newList=myList.map((value){
    return value>4;
  });
  print(newList);

我们得到的返回值为:

(false, false, false, true, true, true)

得出结论:map的返回值为每个匿名方法return值的集合
where返回值为匿名方法return值为true的元素的集合

any()

检测集合中是否有满足条件的元素,如果有就返回true

  List myList = [1,3,4,5,7,9];
  var flag=myList.any((value){
    return value>7;
  });

every()

检测是否集合中每个元素都满足条件,如果都满足则返回true

代码略

Set

  • 用它最主要的功能就是去除数组重复内容

  • Set是没有书序且不能重复的集合,不能通过索引去获取值

利用set去重

List myList=["1","2","3","1","2","3"];
var set = new Set();
set.addAll(myList);  

打印set中的所有元素

  var s = new Set();
  s.addAll([1,2,3]);
  s.forEach((element)=>print(element));

Map映射 无序的键值对

初始化map的两种方式

var person={
"name":"bob",
"age":20
};    

var m = new Map();
m["name"]="jenny";
m["age"]=21
常用属性:
  • keys 获取所有的key值, 常后接一个toList方法
  • values 获取所有的value值
  • isEmpty 是否为空
  • isNotEmpty 是否不为空
常用方法:
  • remove(key) 删除指定k-v
  • addAll({…}) 合并映射,将参数的数据加入到map中
  • containsValue 查看映射内的值,返回true/false
  • forEach
  • map
  • where
  • any
  • every

循环打印map中的键值对

  var person={
    "name":"bob",
    "age":20,
    "sex":"male"
  };

  person.forEach((key, value) {
    print("$key: $value");
  });

补充:循环进阶

增强for循环
  for(var item in list){
    print(item);
  }
.forEach
  list.forEach((value) {
    print("$value");
  });

更多详细内容可参考api文档(英文)
https://api.dart.cn/stable/2.14.2/dart-core/List-class.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值