文章目录

  • 简介
  • 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中的集合相关推荐

  1. java去重复的集合_如何去除Java中List集合中的重复数据

    1.循环list中的所有元素然后删除重复 public class duplicatRemoval { public static List removeDuplicate(List list){ f ...

  2. redis中存集合_如何在Redis中管理集合

    redis中存集合 介绍 (Introduction) Redis is an open-source, in-memory key-value data store. Sets in Redis a ...

  3. 集合遍历python_遍历Python中的集合

    在本文中,我们将学习在Python 3.x中对集合进行遍历/遍历.或更早. 它是对象的无序集合,没有任何重复.这可以通过将所有元素括在花括号内来完成.我们还可以通过关键字" set" ...

  4. ruby 集合 分组_在Ruby中打印集合的元素

    ruby 集合 分组 We have gone through the implementation of sets in Ruby. They are very similar to arrays. ...

  5. dart系列之:集合使用实践

    文章目录 简介 使用字面量创建集合 不要使用.length来判断集合是否为空 可遍历对象的遍历 List.from和iterable.toList where和whereType 避免使用cast 总 ...

  6. java list 前100个_实现java 中 list集合中有几十万条数据,每100条为一组取出

    解决"java 中 list集合中有几十万条数据,每100条为一组取出来如何实现,求代码!!!"的问题. 具体解决方案如下: /** * 实现java 中 list集合中有几十万条 ...

  7. Java中List集合介绍(炒鸡详细呦)

    Java中List集合介绍 文章目录 Java中List集合介绍 1,Java集合介绍 2,List介绍 2.1 ArrayList集合 2.2 LinkedList集合 3,List常用方法 3.1 ...

  8. python集合应用场景_十、python 集合的定义与使用

    一.集合的定义 定义:由不同元素组成的集合,集合是一组无序排列 可hash值,可作为字典的key. 特性:集合的目的是将不同的值存放在一起,不同的集合间用来做关系运算,无须纠结于集合中的单个值. (1 ...

  9. Python集合类型详解(一)——集合定义与集合操作符

    今天继续给大家介绍Python相关知识,本文主要内容是Python集合类型定义与集合操作符. 一.集合类型定义 在Python中,集合是一种非常重要的组合数据类型.Python中的集合与数学中的集合非 ...

最新文章

  1. H3C   ISIS与BGP 路由配置
  2. Java 枚举(enum)详解
  3. 荣获中国音视频产业大会「科技创新奖」,网易云信彰显行业领先水平
  4. 5月19-20日WebRTCon 2018 梳理全球WebRTC技术实践与案例
  5. python岗位 上海_上海黑马Python24期,平均薪资10150元,16个工作日就业率70.73%
  6. Chapter3-2_Speech Separation(TasNet)
  7. 【HTML/CSS】浮动模型和清除浮动的方法
  8. ajax上传文件表单,图片、文件无刷新上传,jquery.form.js的使用
  9. java面试题_2020年JAVA最新大厂面试题!
  10. 干货 | 集成学习综述与代码实现
  11. VMware-workstation 密钥
  12. 用在线RaxML构建系统发育树
  13. Matlab运行.m文件
  14. 颜色的RGBnbsp;指数
  15. java opennlp_在java中使用opennlp提取名词短语
  16. 首席新媒体黎想教程:如何打造爆款裂变活动推广?
  17. 软件架构模式 mark Richards - 读后总结 4 - 微服务架构
  18. Praat脚本-006 | 批量修改删除复制某一层
  19. linux下写脚本时-gt或-lt是什么意思?
  20. python处理excel和word文档

热门文章

  1. 深度学习项目-人群密度估计
  2. BZOJ2806(后缀自动机+DP)
  3. 6.变量的使用.rs
  4. 9.IDA-重新设置函数类型、创建数组结构
  5. 1.2句柄及 WinMain函数
  6. 【网络编程】之七、select聊天室
  7. 3_11 InterpreterMode 解释器模式
  8. redis面试精华指南pdf
  9. 过滤请求绝技 — 布隆过滤器与布谷鸟过滤器
  10. 详解实时查看网卡流量的几款工具