目录

前言

List

Set

Map

集合的遍历

forEach

map

where

any

every


前言

Dart的集合类型使用感觉跟ES6中的集合差不多,这里整理一下Dart集合的常用属性和方法。

List

List里面常用的属性和方法

常用属性:
        length          长度
        reversed        翻转
        isEmpty         是否为空
        isNotEmpty      是否不为空
    常用方法:  
        add         增加
        addAll      拼接数组
        indexOf     查找  传入具体值
        remove      删除  传入具体值
        removeAt    删除  传入索引值
        fillRange   修改   
        insert(index,value);            指定位置插入    
        insertAll(index,list)           指定位置插入List
        toList()    其他类型转换成List  
        join()      List转换成字符串
        split()     字符串转化成List

void main() {
//List里面的属性:List myList = ['香蕉', '苹果', '西瓜'];print(myList.length);//3print(myList.isEmpty);//falseprint(myList.isNotEmpty);//trueprint(myList.reversed); //对列表倒序排序 (西瓜, 苹果, 香蕉)var newMyList = myList.reversed.toList();//转换为list  [西瓜, 苹果, 香蕉]print(newMyList);//[西瓜, 苹果, 香蕉]//List里面的方法:myList.add('桃子'); //增加数据  增加一个myList.addAll(['桃子', '葡萄']); //拼接数组print(myList);//[香蕉, 苹果, 西瓜, 桃子, 桃子, 葡萄]print(myList.indexOf('苹x果')); //indexOf查找数据 查找不到返回-1  查找到返回索引值myList.remove('西瓜');myList.removeAt(1);print(myList);//[香蕉, 桃子, 桃子, 葡萄]myList.fillRange(1, 2, 'aaa'); //修改myList.fillRange(1, 3, 'aaa');myList.insert(1, 'aaa'); //插入  一个myList.insertAll(1, ['aaa', 'bbb']); //插入 多个print(myList);//[香蕉, aaa, bbb, aaa, aaa, aaa, 葡萄]var str = myList.join('-'); //list转换成字符串print(str);//香蕉-aaa-bbb-aaa-aaa-aaa-葡萄print(str is String); //truevar list = str.split('-');print(list);//[香蕉, aaa, bbb, aaa, aaa, aaa, 葡萄]print(list is List);//true
}

Set

Set是没有顺序且不能重复的集合,所以不能通过索引去获取值,用它最主要的功能就是去除数组重复内容。

void main(){var s=new Set();s.add('香蕉');s.add('苹果');s.add('苹果');print(s);   //{香蕉, 苹果}print(s.toList());//[香蕉, 苹果]List myList=['香蕉','苹果','西瓜','香蕉','苹果','香蕉','苹果'];var set=new Set();set.addAll(myList);print(set);//{香蕉, 苹果, 西瓜}print(set.toList());//[香蕉, 苹果, 西瓜]
}

Map

映射(Map)是无序的键值对:

常用属性:
        keys            获取所有的key值
        values          获取所有的value值
        isEmpty         是否为空
        isNotEmpty      是否不为空
    常用方法:
        remove(key)     删除指定key的数据
        addAll({...})   合并映射  给映射内增加属性
        containsValue   查看映射内的值  返回true/false

void main() {//常用属性:Map person = {"name": "张三", "age": 20, "sex": "男"};print(person.keys.toList());//[name, age, sex]print(person.values.toList());//[张三, 20, 男]print(person.isEmpty);//falseprint(person.isNotEmpty);//true//常用方法:person.addAll({"work": ['敲代码', '送外卖'],"height": 160});print(person);//{name: 张三, age: 20, sex: 男, work: [敲代码, 送外卖], height: 160}person.remove("sex");print(person);//{name: 张三, age: 20, work: [敲代码, 送外卖], height: 160}print(person.containsValue('张三'));//true
}

集合的遍历

forEach

跟js中的forEach一样,通过传入一个function来遍历集合子元素,区别是Dart中遍历List只有一个参数即element,不能输出index,Map中只有两个参数即key和value。

List myList=['香蕉','苹果','西瓜'];
myList.forEach((value){print("$value");
});
Map person={"name":"张三","age":20
};person.forEach((key,value){            print("$key---$value");
});

map

map:循环修改集合中的子元素,并返回一个新的集合。

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

需要注意的是,返回值不是一个直接的List,需要调用toList()转化一下。

where

where:过滤集合中的元素,返回满足过滤条件的元素集合。同样返回值需要调用toList()转化。

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

any

any:只要集合里面有满足条件的就返回true

List myList = [1, 3, 4, 5, 7, 8, 9];
var f = myList.any((value) {return value > 5;
});
print(f);//true

every

every:每一个都满足条件返回true,否则返回false

List myList = [1, 3, 4, 5, 7, 8, 9];
var f = myList.every((value) {return value > 5;
});
print(f);//false

Dart学习笔记六:集合类型详解相关推荐

  1. [读书笔记]C#学习笔记三: C#类型详解..

    前言 这次分享的主要内容有五个, 分别是值类型和引用类型, 装箱与拆箱,常量与变量,运算符重载,static字段和static构造函数. 后期的分享会针对于C#2.0 3.0 4.0 等新特性进行. ...

  2. 【python 笔记】集合类型详解

    目录 集合: 创建集合 集合的基本操作 集合的内建函数和方法 面向可变集合的内建函数 集合: 无序不重复的元素的组合 利用集合可以删除列表中的重复项(set()唱用作去重操作) 分类:可变集合(set ...

  3. spring学习笔记03-spring-DI-依赖注入详解(通过xml配置文件来配置依赖注入)

    spring学习笔记03-spring-DI-依赖注入详解 1.概念 2.构造函数注入 3.set方法注入 4.集合的注入 需要被注入的实体对象 package com.itheima.service ...

  4. 【学习笔记】线段树详解(全)

    [学习笔记]线段树详解(全) 和三个同学一起搞了接近两个月的线段树,头都要炸了T_T,趁心态尚未凉之前赶快把东西记下来... [目录] [基础]作者:\((Silent\)_\(EAG)\) [懒标记 ...

  5. Laravel学习笔记汇总——Collection方法详解

    ## Laravel学习笔记汇总--Collection方法详解 本文参考:https:// laravel.com/docs/8.x/collections // 返回整个底层的数组 collect ...

  6. java 检查bytebuf长度_Java学习笔记16-Netty缓冲区ByteBuf详解

    Java学习笔记16-Netty缓冲区ByteBuf详解 Netty自己的ByteBuf ByteBuf是为解决ByteBuffer的问题和满足网络应用程序开发人员的日常需求而设计的. JDK Byt ...

  7. C++11 并发指南六(atomic 类型详解四 C 风格原子操作介绍)

    前面三篇文章<C++11 并发指南六(atomic 类型详解一 atomic_flag 介绍)>.<C++11 并发指南六( <atomic> 类型详解二 std::at ...

  8. C++11 并发指南六(atomic 类型详解三 std::atomic (续))

    C++11 并发指南六( <atomic> 类型详解二 std::atomic ) 介绍了基本的原子类型 std::atomic 的用法,本节我会给大家介绍C++11 标准库中的 std: ...

  9. C++11 并发指南六( atomic 类型详解二 std::atomic )

    C++11 并发指南六(atomic 类型详解一 atomic_flag 介绍)  一文介绍了 C++11 中最简单的原子类型 std::atomic_flag,但是 std::atomic_flag ...

  10. [原创]Saltstack学习笔记:命令参数详解以及配置文件说明

    很久没有更新saltstack的文章了,今天还是来更新一点,又开始对saltstack复习了一下. 前边写了一点<saltstack入门概述(1)>以及<Saltstack如何安装( ...

最新文章

  1. oracle常用关键字和函数
  2. pycharm 黄色(黄字)高亮警告 Default argument value is mutable 原因及解决办法(mutable 可变对象与 immutable不可变对象)
  3. java基本数据类型与封装类 示例_Java零基础系列教程10Java抽象与封装
  4. Java中abstract和interface的区别
  5. ros学习(1)工作空间创建和功能包
  6. 手机这5个反人类的设计,你能容忍到第几个?
  7. 嵌入式:中断的分类和区别
  8. vue-element日期框点击不显示,不刷新
  9. mysql 连接 监控_监控mysql上客户端的连接数
  10. redis缓存和mysql数据库同步
  11. network 公网IP与私网IP的区别
  12. mycat-mysql读写分离
  13. Chrome的YouTube双语字幕插件
  14. 知识管理案例:谁来负责知识管理?
  15. alanwang[GDOU] 写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入
  16. 同质化严重!购物中心如何打造差异化品牌?
  17. ❤️数据可视化❤️:基于Echarts + GeoJson实现的地图视觉映射散点(气泡)组件【7】 - 海南省
  18. 提升OneDrive空间
  19. 使用Bmob云端代码开发微信公众平台(教程)
  20. python爬取去哪儿网酒店信息

热门文章

  1. 卫健委最新报告对医疗设备售后服务产生了什么影响
  2. 【Flume】(四)IDEA编写自定义拦截器
  3. C语言:关键字---struct(声明结构体类型)
  4. matlab中的covsfa什么意思,MALSAR1.1 多种多任务学习算法的工具箱 有代码有使 册 matlab版 238万源代码下载- www.pudn.com...
  5. 源享科技为什么关闭了_关闭这个阀门竟然需要转8000圈?
  6. 手机游戏《魔塔》实现细节——(1)需求收集
  7. Learning Docker 学习Docker Lynda课程中文字幕
  8. PICASSO,一个高效的搜推广稀疏训练解决方案
  9. SkinnedMesh DX9
  10. PHP中time(),date(),microtime()三者的区别