一、申明

Set 是一个元素唯一的有序队列,把相同的元素只保留一个。

1.松散

var a = Set();
a.add('java');
a.add('php');
a.add('python');
a.add('java');
a.add('sql');
a.add('swift');
a.add('dart');

print(a);

{java, php, python, sql, swift, dart}

2.强类型

b.addAll(['dart', 'c#', 'j#', 'e#']);

print(b);

{dart, c#, j#, e#}

3.去重 & 转列表:作用/常见用法

var ls = ['dart', 'java', 'c#', 'j#', 'e#', 'java'];
var tags = Set();
tags.addAll(ls);
print(tags);
print(tags.toList());

{dart, java, c#, j#, e#}
[dart, java, c#, j#, e#]

二、基本属性

名称说明
isEmpty是否为空
isNotEmpty是否不为空
first第一个
last最后一个
length个数

三、常用方法

名称说明
addAll添加
contains查询单个
containsAll查询多个
difference集合不同
intersection交集
union联合
lookup按对象查询到返回对象
remove删除单个
removeAll删除多个
clear清空
firstWhere按条件正向查询
lastWhere按条件反向查询
removeWhere按条件删除
retainAll只保留几个
retainWhere按条件只保留几个
  b.addAll(['dart', 'c#', 'j#', 'e#']);
  print(b.contains('dart'));
  print(b.containsAll(['dart', 'swift']));
  print('b => $b');
  print(a.difference(b));
  print(a.intersection(b));
  print(b.lookup('dart'));
  print(b.union(a));
  b.remove('dart');
  b.removeAll(['dart','c#']);
  b.clear();
  print(b.firstWhere((it) => it == 'c#'));
  print(b.lastWhere((it) => it == 'c#'));
  b.removeWhere((it) => it == 'c#');
  b.retainAll(['e#']);
  b.retainWhere((it) => it == 'e#');
  b.retainWhere((it) {
  bool ret = it == 'e#';
  return ret;
  });

1.交集

得到2个set共有的元素。

var fd = <String>{"js", "node", "dart", "css", "html", "macos", "docker", "git"};
var ed = <String>{"linux", "docker", "git", "go", "python", "sql", "node", "js", "aws"};

print(fd.intersection(ed));

{js, node, docker, git}

2.联合

得到2个个set的并集。

var fd = <String>{"js", "node", "dart", "css", "html", "macos", "docker", "git"};
var ed = <String>{"linux", "docker", "git", "go", "python", "sql", "node", "js", "aws"};

print(fd.union(ed));

{js, node, dart, css, html, macos, docker, git, linux, go, python, sql, aws}

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐