前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >没有人比我更会使用集合!对, 是dart中的集合

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

原创
作者头像
程序那些事
修改2021-11-26 08:08:03
9210
修改2021-11-26 08:08:03
举报
文章被收录于专栏:程序那些事程序那些事

简介

dart中的集合有三个,分别是list,set和map。dart在dart:core包中提供了对于这三种集合非常有用的方法,一起来看看吧。

List的使用

首先是list的创建,可以创建空的list或者带值的list:

代码语言:javascript
复制
var emptyList =[];

var nameList = ['jack','mac'];

使用List的构造函数来创建:

代码语言:javascript
复制
var nameList = List.filled(2, 'max');

向list中添加元素或者list:

代码语言:javascript
复制
nameList.add('tony');
nameList.addAll(['lili', 'bruce']);

删除元素:

代码语言:javascript
复制
nameList.removeAt(0);
nameList.clear();

dart提供了list的排序方法sort(),sort可以接一个比较的函数,用来表示谁在前谁在后:

代码语言:javascript
复制
var names = ['jack', 'tony', 'max'];

fruits.sort((a, b) => a.compareTo(b));

list中还可以使用泛型,表示list中固定的类型:

代码语言:javascript
复制
var names = <String>[];

names.add('jack');

Set的使用

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

来看下set的基本用法:

代码语言:javascript
复制
//创建一个空的set
var names = <String>{};

// 添加新的元素
names.addAll(['jack', 'tony', 'max']);

//删除元素

names.remove('jack');

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

代码语言:javascript
复制
var names = Set.from(['jack', 'tony', 'max']);

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

代码语言:javascript
复制
assert(names.contains('jack'));

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

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

代码语言:javascript
复制
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:

代码语言:javascript
复制
// 创建map
var studentMap = {
  'name': 'jack',
  'age': '18',
  'class': 'class one'
};


var teacherMap = Map();

var teacherMap2 = Map<String, String>();

添加和删除:

代码语言:javascript
复制
  var studentMap =Map();
  studentMap.putIfAbsent('name', ()=>'jack');
  studentMap.remove('name');

判断map中是否包含某个key可以使用containsKey():

代码语言:javascript
复制
assert(studentMap.containsKey('name'));

常见的集合方法

集合中最常见的方法就是判断集合是否为空:

代码语言:javascript
复制
assert(studentMap.isEmpty);
assert(studentMap.isNotEmpty);

如果想对集合中的每个元素都进行某个函数操作,则可以使用forEach():

代码语言:javascript
复制
var names = ['jack', 'bob', 'tom'];

names.forEach((name) => print('the name is $name'));

var nameMap = {};

nameMap.forEach((k, v) {
});

如果是可遍历对象,则有一个map方法,map方法会返回一个新的对象:

代码语言:javascript
复制
var names = ['jack', 'bob', 'mark'];

var names2 = names.map((name) => name.toUpperCase());

注意,map返回的是一个Iterable,它是延时计算的,只有被使用的时候才会进行计算。

如果你想立即计算的话,则可以使用map().toList() 或者 map().toSet():

代码语言:javascript
复制
var names2 =
    names.map((name) => name.toUpperCase()).toList();

可遍历对象还可以进行条件选择。比如使用where()来获得所有匹配的对象,使用any()来判断集合中是否有匹配的对象,使用every()来判断集合中是否全部匹配。

代码语言:javascript
复制
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/

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • List的使用
  • Set的使用
  • Map的使用
  • 常见的集合方法
  • 总结
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档