懂集合吗?对,是dart中的集合
文章目录
- 简介
- List的使用
- Set的使用
- Map的使用
- 常见的集合方法
- 总结
简介
dart中的集合有三个,分别是list,set和map。dart在dart:core包中提供了对于这三种集合非常有用的方法,一起来看看吧。
List的使用
首先是list的创建,可以创建空的list或者带值的list:
var emptyList =[];var nameList = ['jack','mac'];
使用List的构造函数来创建:
var nameList = List.filled(2, 'max');
向list中添加元素或者list:
nameList.add('tony');
nameList.addAll(['lili', 'bruce']);
删除元素:
nameList.removeAt(0);
nameList.clear();
dart提供了list的排序方法sort(),sort可以接一个比较的函数,用来表示谁在前谁在后:
var names = ['jack', 'tony', 'max'];fruits.sort((a, b) => a.compareTo(b));
list中还可以使用泛型,表示list中固定的类型:
var names = <String>[];names.add('jack');
Set的使用
Set表示的是不重复的元素的集合。但是set和list不同的是set是无序的,所以你不能用index来定位set中的元素。
来看下set的基本用法:
//创建一个空的set
var names = <String>{};// 添加新的元素
names.addAll(['jack', 'tony', 'max']);//删除元素names.remove('jack');
或者使用Set的构造函数来构造Set:
var names = Set.from(['jack', 'tony', 'max']);
判断集合中元素是否存在:
assert(names.contains('jack'));assert(names.containsAll(['jack', 'tony']));
set还有一个intersection的操作,用来求两个set的交集:
var name1 = Set<String>();
name1.addAll(['jack', 'tony', 'max']);var name2 = Set.from(['tony', 'bily']);
var intersection = name1.intersection(name2);
Map的使用
Map是一种key,value的数据类型,也是一种在程序中非常常见的数据类型。
先看下怎么创建Map:
// 创建map
var studentMap = {'name': 'jack','age': '18','class': 'class one'
};var teacherMap = Map();var teacherMap2 = Map<String, String>();
添加和删除:
var studentMap =Map();studentMap.putIfAbsent('name', ()=>'jack');studentMap.remove('name');
判断map中是否包含某个key可以使用containsKey():
assert(studentMap.containsKey('name'));
常见的集合方法
集合中最常见的方法就是判断集合是否为空:
assert(studentMap.isEmpty);
assert(studentMap.isNotEmpty);
如果想对集合中的每个元素都进行某个函数操作,则可以使用forEach():
var names = ['jack', 'bob', 'tom'];names.forEach((name) => print('the name is $name'));var nameMap = {};nameMap.forEach((k, v) {
});
如果是可遍历对象,则有一个map方法,map方法会返回一个新的对象:
var names = ['jack', 'bob', 'mark'];var names2 = names.map((name) => name.toUpperCase());
注意,map返回的是一个Iterable,它是延时计算的,只有被使用的时候才会进行计算。
如果你想立即计算的话,则可以使用map().toList() 或者 map().toSet():
var names2 =names.map((name) => name.toUpperCase()).toList();
可遍历对象还可以进行条件选择。比如使用where()来获得所有匹配的对象,使用any()来判断集合中是否有匹配的对象,使用every()来判断集合中是否全部匹配。
var names = ['jack', 'bob', 'max'];bool hasJack(String name) =>name == 'jack';var seleteJack =names.where((name) => hasJack(name));assert(names.any(hasJack));assert(!names.every(hasJack));
总结
集合是在程序编写过程中非常常用的一种类型,大家一定要熟练掌握。
本文已收录于 http://www.flydean.com/15-dart-collection/
最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!
欢迎关注我的公众号:「程序那些事」,懂技术,更懂你!
懂集合吗?对,是dart中的集合相关推荐
- java去重复的集合_如何去除Java中List集合中的重复数据
1.循环list中的所有元素然后删除重复 public class duplicatRemoval { public static List removeDuplicate(List list){ f ...
- redis中存集合_如何在Redis中管理集合
redis中存集合 介绍 (Introduction) Redis is an open-source, in-memory key-value data store. Sets in Redis a ...
- 集合遍历python_遍历Python中的集合
在本文中,我们将学习在Python 3.x中对集合进行遍历/遍历.或更早. 它是对象的无序集合,没有任何重复.这可以通过将所有元素括在花括号内来完成.我们还可以通过关键字" set" ...
- ruby 集合 分组_在Ruby中打印集合的元素
ruby 集合 分组 We have gone through the implementation of sets in Ruby. They are very similar to arrays. ...
- dart系列之:集合使用实践
文章目录 简介 使用字面量创建集合 不要使用.length来判断集合是否为空 可遍历对象的遍历 List.from和iterable.toList where和whereType 避免使用cast 总 ...
- java list 前100个_实现java 中 list集合中有几十万条数据,每100条为一组取出
解决"java 中 list集合中有几十万条数据,每100条为一组取出来如何实现,求代码!!!"的问题. 具体解决方案如下: /** * 实现java 中 list集合中有几十万条 ...
- Java中List集合介绍(炒鸡详细呦)
Java中List集合介绍 文章目录 Java中List集合介绍 1,Java集合介绍 2,List介绍 2.1 ArrayList集合 2.2 LinkedList集合 3,List常用方法 3.1 ...
- python集合应用场景_十、python 集合的定义与使用
一.集合的定义 定义:由不同元素组成的集合,集合是一组无序排列 可hash值,可作为字典的key. 特性:集合的目的是将不同的值存放在一起,不同的集合间用来做关系运算,无须纠结于集合中的单个值. (1 ...
- Python集合类型详解(一)——集合定义与集合操作符
今天继续给大家介绍Python相关知识,本文主要内容是Python集合类型定义与集合操作符. 一.集合类型定义 在Python中,集合是一种非常重要的组合数据类型.Python中的集合与数学中的集合非 ...
最新文章
- H3C ISIS与BGP 路由配置
- Java 枚举(enum)详解
- 荣获中国音视频产业大会「科技创新奖」,网易云信彰显行业领先水平
- 5月19-20日WebRTCon 2018 梳理全球WebRTC技术实践与案例
- python岗位 上海_上海黑马Python24期,平均薪资10150元,16个工作日就业率70.73%
- Chapter3-2_Speech Separation(TasNet)
- 【HTML/CSS】浮动模型和清除浮动的方法
- ajax上传文件表单,图片、文件无刷新上传,jquery.form.js的使用
- java面试题_2020年JAVA最新大厂面试题!
- 干货 | 集成学习综述与代码实现
- VMware-workstation 密钥
- 用在线RaxML构建系统发育树
- Matlab运行.m文件
- 颜色的RGBnbsp;指数
- java opennlp_在java中使用opennlp提取名词短语
- 首席新媒体黎想教程:如何打造爆款裂变活动推广?
- 软件架构模式 mark Richards - 读后总结 4 - 微服务架构
- Praat脚本-006 | 批量修改删除复制某一层
- linux下写脚本时-gt或-lt是什么意思?
- python处理excel和word文档