您现在的位置是:首页 > 正文

Dart学习笔记 List Set Map详解

2024-02-01 05:09:06阅读 5

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

网站文章

  • Chaos Mesh 在每刻科技实际场景的使用

    Chaos Mesh 在每刻科技实际场景的使用

    首先,在平台上去注入对应的方法异常故障,这个时候逻辑走到了异常处理的代码块,再注入故障,进入回滚,继续对回滚逻辑注入故障,到此就完成了这个异常场景的可测性。简单来说,首先获取到该函数的返回值(一个列表...

    2024-02-01 05:08:59
  • 正在从以下位置加载符号 VS 调试非常慢

    正在从以下位置加载符号 VS 调试非常慢

    前两天突然出现了一个.net未知异常的调试询问? 是否启动VS实例进行调试, 我选择了调试. 然后我自己的项目调试一下就变得非常慢了. 一直出现 ”正在从以下位置加载xxxxxx符号” 一个个加载, 非常慢. 往常启动调试 几秒钟就把这些加载好了. 但是现在几分钟都加载不完. 网上查了一下, 禁用 Microsoft 符号服务器, 清空符号缓存 即可

    2024-02-01 05:08:53
  • MySQL常见错误及处理方法

    1205 - Lock wait timeout exceeded; try restarting transaction出现此错误是因为语句被锁住了,所以释放这个锁,首先查询被锁的语句select * from information_schema.innodb_trx;执行kill命令kill 141865400;

    2024-02-01 05:08:25
  • Hive 常用存储、压缩格式

    Hive 常用存储、压缩格式

    【代码】Hive 常用存储、压缩格式。

    2024-02-01 05:08:18
  • 一篇文章解析所有C语言里字符串的操作

    @函数名称: strtok 函数原型: char *strtok(char *s1, const char *s2) 函数功能: 分解s1字符串为用特定分隔符分隔的多个字符串(一般用于将英文句分解为单词) 函数返回: 字符串s1中首次出现s2中的字符前的子字符串指针 参数说明: s2一般设置为s1中的分隔字符 规定进行子调用时(即分割

    2024-02-01 05:08:10
  • Ubuntu的8080端口被占用

    Ubuntu的8080端口被占用

    因为最近学习web建站技术,弄了好多环境,今天开机启动服务的时候报了如下错误: 意思就是我的8080端口已经被别的进程占用了,导致服务启动异常。解决办法so easy, 找到占用8080端口的进程,直接kill掉就好啦。百度一下,第一步使用 netstat -ntl | grep 8080 查看8080端口的占用情况: 再使用命令 lsof -i:8080 就可以列出占用80...

    2024-02-01 05:07:41
  • Redis快速入门(基本操作 一)

    Redis快速入门(基本操作 一)

    Redis简介: Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 Nosql 泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系...

    2024-02-01 05:07:34
  • 华为工程师终于把困扰我多年的「操作系统和计算机网络」讲明白了

    华为工程师终于把困扰我多年的「操作系统和计算机网络」讲明白了

    计算机网络、计算机操作系统这两个“兄弟”是所有开发岗位都需要“结拜”的,不管你是 Java、C++还是测试。对于后端开发的童鞋来说,计算机网络的重要性不亚于语言基础,毕竟平时开发经常会和网络打交道,比如:抓个包等等。所以对这一块知识点的准备还是要抱着敬畏之心,不要放过任何一个漏网之题。

    2024-02-01 05:07:26
  • 跟着小刘一起入门一下Sharding jdbc

    跟着小刘一起入门一下Sharding jdbc

    文章目录sharding jdbc -缘起分库分表的出现小结分库分表带来问题Sharding JDBC 介绍快速入门 sharding jdbc -缘起 前段时间,在工作接手了一个新的项目,我问Bos...

    2024-02-01 05:07:18
  • SQL数据库

    SQL数据库

    SQL简介

    2024-02-01 05:06:48