Dart List 、Set、Map 的使用
不讲理论,代码实践
一、List
API 文档:https://api.dart.dev/dev/2.4.0-dev.0.0/dart-core/List-class.html
常用的几个方法和属性:
List l1 = ['aaa', 'bbb', 'ccc', 'ddd', 'eee'];
print(l1.length); // 5
print(l1.isEmpty); // false
print(l1.isNotEmpty); // true
print(l1.reversed); // (eee, ddd, ccc, bbb, aaa)
print(l1.reversed is List); // false
print(l1.reversed.toList()); // [eee, ddd, ccc, bbb, aaa]
print(l1.reversed.toList() is List); // true
需要注意的是 (eee, ddd, ccc, bbb, aaa)
并非 List 类型,只是 Iterable 的,只有 [eee, ddd, ccc, bbb, aaa]
才是 List 类型。
Iterable 转成 List 类型,只需要 xxx.toList()
方法即可。
输出结果:
List l2 = [1,3,2,6];
List l3 = [5, 1];
l2.add(0);
l2.addAll(l3);
print(l2); // [1, 3, 2, 6, 0, 5, 1]
print(l2.indexOf(1)); // 0
print(l2.indexOf(100)); // -1
print(l2.remove(1)); // true
print(l2.remove(100)); // false
print(l2); // [3, 2, 6, 0, 5, 1]
print(l2.removeAt(1)); // 2
print(l2); // [3, 6, 0, 5, 1]
l2.fillRange(1, 3, 'aaa');
print(l2); // [3, aaa, aaa, 5, 1]
l2.insert(1, 'bbbb');
print(l2); // [3, bbbb, aaa, aaa, 5, 1]
l2.insertAll(1, ['ccc', 'ddd']);
print(l2); // [3, ccc, ddd, bbbb, aaa, aaa, 5, 1]
String str1 = l2.join('-');
print(str1); // 3-ccc-ddd-bbbb-aaa-aaa-5-1
print(str1.split('-')); // [3, ccc, ddd, bbbb, aaa, aaa, 5, 1]
字符串与 List 互转与 js 方法一样,分别是 list.join('-')
和 str.split('-')
输出结果:
二、Set
API 文档:https://api.dart.dev/dev/2.4.0-dev.0.0/dart-core/Set-class.html
Set 的子项都是唯一的,List 去重可以先转 Set 再转 List 即可。
Set s1 = new Set();
s1.add('aaa');
s1.add('aaa');
s1.add('bbb');
print(s1); // {aaa, bbb}
print(s1.toList()); // [aaa, bbb]
List l1 = [1,1,1,1,1];
print(l1.toSet().toList()); // [1]
输出结果:
三、Map
API 文档:https://api.dart.dev/dev/2.4.0-dev.0.0/dart-core/Map-class.html
Map m1 = new Map();
m1['name'] = 'ptbird';
m1.addAll({"age": 24, "age2": 25});
print(m1); // {name: ptbird, age: 24, age2: 25}
print(m1.isNotEmpty); // true
print(m1.isEmpty); // false
print(m1.keys); // (name, age, age2)
print(m1.keys.toList()); // [name, age, age2]
print(m1.values.toSet()); // {ptbird, 24, 25}
m1.remove('name');
print(m1); // {age: 24, age2: 25}
print(m1.containsKey('name')); // false
print(m1.containsValue('name')); // false
输出结果:
四、forEach 、 every 、 where、 any 、map
1、forEach
List l1 = ['a','b','c'];
for( var i in l1) {
print(i);
}
l1.forEach((item) => print(item));
l1.forEach((item) {
print(item);
});
输出结果:
2、every
判断每个子项是否满足条件,需要全部满足才会返回 true
List l1 = [1,2,3];
var l2;
l2 = l1.every((item){
return item > 1;
});
print(l2);
输出结果:
3、where
将满足条件的值返回,返回的是 iterable 类型,需要转 set 或者 list 需要调用对应的方法。
List l1 = [1,2,3];
var l2;
l2 = l1.where((item){
return item > 1;
});
print(l2);
输出结果:
4、any
只要有一个子项满足就会返回 true
List l1 = [1,2,3];
var l2;
l2 = l1.any((item){
return item > 1;
});
输出结果:
5、map
map 对每个子项都进行处理并且返回,从而生成一个新的 List 或者是 Set
List l1 = [1,2,3];
var l2;
l2 = l1.map((item){
print(item);
if(item > 1) {
return item;
}
});
print(l2);
输出结果:
文章版权:Postbird-There I am , in the world more exciting!
本文链接:http://www.ptbird.cn/dart-list-set-map.html
转载请注明文章原始出处 !