//声明时直接赋值
Set category = {‘书籍‘, ‘水果‘, ‘服饰‘};
//先声明再赋值,new在dart中可以省略
Set fruit = new Set();
fruit.add(‘苹果‘);
fruit.add(‘香蕉‘);
fruit.add(‘梨子‘);
print(category); //{书籍, 水果, 服饰}
print(fruit); //{苹果, 香蕉, 梨子}
Set set = {1, 2, 3, 4, 5, 6};
print(set.first); //1
print(set.last); //6
print(set.length); //6
print(set.isEmpty); //false
print(set.isNotEmpty); //true
//如果集合不是单个值就报错,否则返回值
print(set.single); //报错
Set set = {1, 2, 3, 4};
//add 在尾部添加单个值
set.add(5);
print(set);//{1, 2, 3, 4, 5}
//addAll 在尾部添加多个值
set.addAll({7, 8, 9});
print(set);//{1, 2, 3, 4, 7, 8, 9}
//followedBy 懒添加
Set set = {1, 2, 3, 4};
Set set2 = {888, 999};
print(set.followedBy(set2));//(1, 2, 3, 4, 888, 999)
Set set = {1, 2, 3, 4};
//remove 删除单个值
set.remove(2);
print(set);//{1, 3, 4}
//removeAll 删除多个值
set.removeAll({2, 3});
print(set);
//removeWhere 按条件进行删除
set.removeWhere((element) => element == 3);
print(set);//{1, 2, 4}
//clear 清空集合
set.clear();
print(set);//{}
//difference 返回和设定集合不同的值,差集
print(set.difference({1, 2}));//{3, 4}
//intersection 返回和设定集合相同同的值,交集
print(set.intersection({2, 3}));
//union 添加新的集合,并集
print(set.union({888, 999}));//{1, 2, 3, 4, 888, 999}
Set set = {1, 2, 3, 4};
//转字符串
print(set.join()); //1234
print(set.toString()); //{1, 2, 3, 4}
//转数组
print(set.toList()); //[1, 2, 3, 4]
//forEach
Set set = {1, 2, 3, 4};
set.forEach((element) {
print(element);
});
/*
1
2
3
4
*/
//map
Set set = {1, 2, 3, 4};
var res = set.map((e) => e * e);
print(res);//(1, 4, 9, 16)
//reduce
Set set = {1, 2, 3, 4};
var res = set.reduce((a, b) => a * b);
print(res);//24
//fold
Set set = {1, 2, 3, 4};
var res = set.fold(10, (a, b) => a * b);
print(res);//240
//expand
Set set = {1, 2, 3, 4};
var res = set.expand((element) => [element, element + 1]);
print(res);//(1, 2, 2, 3, 3, 4, 4, 5)
Set set = {1, 2, 3, 4};
//every 全部满足条件返回true否则false
print(set.every((element) => element > 2));
//any 一个满足条件返回true,否则fals
print(set.any((element) => element > 2));
//where 返回满足条件的值
var res = set.where((element) => element > 2);
print(res);
//firstWhere 返回从左到右满足条件的第一个值
var res = set.firstWhere((element) => element > 1);
print(res);//2
//lastWhere 返回从右到左满足条件的第一个值
var res = set.lastWhere((element) => element > 2);
print(res);//4
//singleWhere 如果满足条件的值只有一个,返回其值,否则报错
var res = set.singleWhere((element) => element > 3);
print(res);//4
//whereType 返回设定类型的值
Set set = {1, 2, ‘a‘, 4};
Iterable<int> res = set.whereType();
print(res);//(1, 2, 4)
Iterable<String> res2 = set.whereType();
print(res2);//(a)
//retainWhere 返回满足条件的值,如果都不满足返回空集合
set.retainWhere((element) => element == 5);
print(set);//{}
set.retainWhere((element) => element > 2);
print(set);//{3, 4}
//retainAll 返回满足条件的值的集合,一个满足,一个不满足,返回满足的值,都不满足返回空集合
set.retainAll({2, 3});
print(set);//{2, 3}
set.retainAll({2, 5});
print(set);//{2}
//contains 集合中包含设定值返回true,否则false
print(set.contains(3));//true
//containsAll 集合中包含设定值返回true,否则false
print(set.containsAll({3, 2}));//true
//lookup 集合中包含设定值返回其值,否则返回null
print(set.lookup(2));//2
//elementAt 取索引值为2的值
print(set.elementAt(2));//3
//跳过前两个,返回其余的值
print(set.skip(2));//(3, 4)
//从左到右跳过满足条件的值到不满足条件的值为止,返回其余的值
print(set.skipWhile((value) => value < 2));//(2, 3, 4)
//取前两个值
print(set.take(2));//(1, 2)
//从左到右取满足条件的值到不满足条件的值为止
print(set.takeWhile((value) => value < 3));//(1, 2)
原文:https://www.cnblogs.com/TobuTobu/p/14368135.html