资讯专栏INFORMATION COLUMN

没有人比我更会使用集合!对, 是dart中的集合

番茄西红柿 / 3051人阅读

摘要:来看下的基本用法创建一个空的或者使用的构造函数来构造判断集合中元素是否存在还有一个的操作,用来求两个的交集的使用是一种,的数据类型也是一种在程序中非常常见的数据类型。

简介

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 =

Set的使用

Set表示的是不重复的元素的集合。但是set和list不同的是set是无序的,所以你不能用index来定位set中的元素。

来看下set的基本用法:

//创建一个空的setvar names =

或者使用Set的构造函数来构造Set:

var names = Set.from([jack, tony, max]);

判断集合中元素是否存在:

assert(names.contains(jack));assert(names.containsAll([jack, tony]));

set还有一个intersection的操作,用来求两个set的交集:

var name1 = Set

Map的使用

Map是一种key,value的数据类型,也是一种在程序中非常常见的数据类型。

先看下怎么创建Map:

// 创建mapvar studentMap = {  name: jack,  age: 18,  class: class one};var teacherMap = Map();var teacherMap2 = Map

添加和删除:

  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/

最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!

欢迎关注我的公众号:「程序那些事」,懂技术,更懂你!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/125372.html

相关文章

  • #yyds干货盘点#有人比我更会使用集合, dart中的集合

    摘要:简介中的集合有三个,分别是,和。比如使用来获得所有匹配的对象,使用来判断集合中是否有匹配的对象,使用来判断集合中是否全部匹配。总结集合是在程序编写过程中非常常用的一种类型,大家一定要熟练掌握。 简介dart中的集合有三个,分别是list,set和map。dart在dart:core包中提供了对于这三种集合非常有用的方法,一...

    番茄西红柿 评论0 收藏2637
  • 6月份最新语言排行:Java,Python我更看好谁?

    摘要:作为一种现代语言,它看起来像一种旧语言,因更倾向于做移动和网站开噶。所以,个人觉得每种语言都有其自己的优势,找到自己的短板并补足自己的短板。总结于哥更推荐想成为某种语言编程大牛的人,不建议只想搬运带代码的码农。 文章首发于终端研发部,转载,请标明原文链接 今天的主题是:探讨一下6月份语言排行还有我的最新展望! 最近,编程语言排行榜前几天发布更新了,在最新的TIOBE编程语言排行榜中,J...

    svtter 评论0 收藏0
  • Nicholas C. Zakas:我热爱互联网技术的种种异端

    摘要:图灵社区看来,移动互联网开发会成为下一行业焦点,你觉得呢移动互联网开发已经是焦点了。图灵社区现在有很多基于改进的语言,比如,等等。热爱跨浏览器开发带来的挑战热爱互联网技术的种种异端,热爱业内的同行,热爱你的工具。 非商业转载请注明作译者、出处,并保留本文的原始链接:http://www.ituring.com.cn/article/1791 尼古拉斯·泽卡斯(Nicholas...

    PascalXie 评论0 收藏0
  • Flutter跨平台开发终极之选吗?Android开发该如何快速上手Flutter?

    摘要:月日,谷歌正式发布了的。到底能不能成为跨平台开发终极之选是基于前端诞生的,但是对前端开发来说,的环境配置很麻烦,需要原生的平台知识,还要担心遇上网络问题。现在已经不是曾经的小众框架,这两年里它已经逐步成长为主流的跨平台开发框架之一。 ...

    luckyyulin 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<