Dart学习笔记六:集合类型详解
目录
前言
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学习笔记六:集合类型详解相关推荐
- [读书笔记]C#学习笔记三: C#类型详解..
前言 这次分享的主要内容有五个, 分别是值类型和引用类型, 装箱与拆箱,常量与变量,运算符重载,static字段和static构造函数. 后期的分享会针对于C#2.0 3.0 4.0 等新特性进行. ...
- 【python 笔记】集合类型详解
目录 集合: 创建集合 集合的基本操作 集合的内建函数和方法 面向可变集合的内建函数 集合: 无序不重复的元素的组合 利用集合可以删除列表中的重复项(set()唱用作去重操作) 分类:可变集合(set ...
- spring学习笔记03-spring-DI-依赖注入详解(通过xml配置文件来配置依赖注入)
spring学习笔记03-spring-DI-依赖注入详解 1.概念 2.构造函数注入 3.set方法注入 4.集合的注入 需要被注入的实体对象 package com.itheima.service ...
- 【学习笔记】线段树详解(全)
[学习笔记]线段树详解(全) 和三个同学一起搞了接近两个月的线段树,头都要炸了T_T,趁心态尚未凉之前赶快把东西记下来... [目录] [基础]作者:\((Silent\)_\(EAG)\) [懒标记 ...
- Laravel学习笔记汇总——Collection方法详解
## Laravel学习笔记汇总--Collection方法详解 本文参考:https:// laravel.com/docs/8.x/collections // 返回整个底层的数组 collect ...
- java 检查bytebuf长度_Java学习笔记16-Netty缓冲区ByteBuf详解
Java学习笔记16-Netty缓冲区ByteBuf详解 Netty自己的ByteBuf ByteBuf是为解决ByteBuffer的问题和满足网络应用程序开发人员的日常需求而设计的. JDK Byt ...
- C++11 并发指南六(atomic 类型详解四 C 风格原子操作介绍)
前面三篇文章<C++11 并发指南六(atomic 类型详解一 atomic_flag 介绍)>.<C++11 并发指南六( <atomic> 类型详解二 std::at ...
- C++11 并发指南六(atomic 类型详解三 std::atomic (续))
C++11 并发指南六( <atomic> 类型详解二 std::atomic ) 介绍了基本的原子类型 std::atomic 的用法,本节我会给大家介绍C++11 标准库中的 std: ...
- C++11 并发指南六( atomic 类型详解二 std::atomic )
C++11 并发指南六(atomic 类型详解一 atomic_flag 介绍) 一文介绍了 C++11 中最简单的原子类型 std::atomic_flag,但是 std::atomic_flag ...
- [原创]Saltstack学习笔记:命令参数详解以及配置文件说明
很久没有更新saltstack的文章了,今天还是来更新一点,又开始对saltstack复习了一下. 前边写了一点<saltstack入门概述(1)>以及<Saltstack如何安装( ...
最新文章
- oracle常用关键字和函数
- pycharm 黄色(黄字)高亮警告 Default argument value is mutable 原因及解决办法(mutable 可变对象与 immutable不可变对象)
- java基本数据类型与封装类 示例_Java零基础系列教程10Java抽象与封装
- Java中abstract和interface的区别
- ros学习(1)工作空间创建和功能包
- 手机这5个反人类的设计,你能容忍到第几个?
- 嵌入式:中断的分类和区别
- vue-element日期框点击不显示,不刷新
- mysql 连接 监控_监控mysql上客户端的连接数
- redis缓存和mysql数据库同步
- network 公网IP与私网IP的区别
- mycat-mysql读写分离
- Chrome的YouTube双语字幕插件
- 知识管理案例:谁来负责知识管理?
- alanwang[GDOU] 写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入
- 同质化严重!购物中心如何打造差异化品牌?
- ❤️数据可视化❤️:基于Echarts + GeoJson实现的地图视觉映射散点(气泡)组件【7】 - 海南省
- 提升OneDrive空间
- 使用Bmob云端代码开发微信公众平台(教程)
- python爬取去哪儿网酒店信息
热门文章
- 卫健委最新报告对医疗设备售后服务产生了什么影响
- 【Flume】(四)IDEA编写自定义拦截器
- C语言:关键字---struct(声明结构体类型)
- matlab中的covsfa什么意思,MALSAR1.1 多种多任务学习算法的工具箱 有代码有使 册 matlab版 238万源代码下载- www.pudn.com...
- 源享科技为什么关闭了_关闭这个阀门竟然需要转8000圈?
- 手机游戏《魔塔》实现细节——(1)需求收集
- Learning Docker 学习Docker Lynda课程中文字幕
- PICASSO,一个高效的搜推广稀疏训练解决方案
- SkinnedMesh DX9
- PHP中time(),date(),microtime()三者的区别