一、List
定义
List list = [1,2,3];
List<int> list = [1,2,3]; // 泛型约束
var list = new List(); // 构造函数 (不安全,推荐使用'List.filled' or 'List.generate')
// 创建不可变List
var list2 = const [1,2,3,"Dart",true];
属性
List<int> list = [1,2,3];
print(list[0]); // 索引访问
print(list.length); // 长度
print(list.reversed.toList()); // reversed返回值是Iterable,可通过toList转回为List。
print(list.isEmpty); // 判断List是否为空
print(list.isNotEmpty); // 判断List是否不为空
方法
List list = [1,2,3];
list.indexOf(1); // 返回值为索引;查不到返回-1
list.add(4); // 修改原List;无返回值。
list.addAll([5]); // 修改原List;无返回值。-- 拼接数组
list.remove(1); // 修改原List;返回值为布尔值。 (若有多个相同的具体值,仅删除索引最小的一项)
list.removeAt(1); // 修改原List;返回值为剩余数组的长度。
list.fillRange(0, 2, 0); // 修改原List;无返回值。 (填充覆盖[start,end)内的列为fillValue)
list.insert(0,2); // 修改原List;无返回值。 (指定位置插入单个)
list.insertAll(0,[1,2]); // 修改原List;无返回值。 (指定位置插入多个)
// List与其他类型之间的转换
print(list.toList() is List);
print(list.toString() is String);
print(list.toSet() is Set);
print(list.join('-') is String);
print("鼠标-键盘".split("-") is List);
高级方法
— 参数无index,仅有element — 没有for…of
List<int> list = [1,2,3];
for(var i=0;i<list.length;i++){}
for(var item in list){}
list.forEach((element) {
print(element);
}); // 循环List,无返回值。
list = list.map((element)=>element+1).toList(); // map返回值为Iterable. -- map
list = list.where((element) => element>=3).toList(); // map返回值为Iterable. -- filter
var bSome = list.any((element) => element>=3); // 返回值为布尔值。 -- some
var bEvery = list.every((element) => element>=2); // 返回值为布尔值。 -- every
二、Set
Set是没有顺序且不能重复的的集合 —> 因此不能使用索引值去访问。 — 主要的功能是去除List中重复的内容
var sSet = new Set(); // 不支持参数
sSet.add(1); // 不能添加重复项
print(sSet);
print(sSet.toList() is List);
List list = [1,1,1,2,2,2];
print(list.toSet().toList()); // 连续转化
sSet.addAll(list);
print(sSet.toList()); // 先addAll List,再toList
/// other methods ...
高级方法
— 参数无index,仅有element — 没有for…of
var set1 = new Set();
List<int> list = [1,2,3];
set1.addAll(list);
print(set1.length);
for(var i=0;i<set1.length;i++){} // 不能使用索引值去访问
for(var item in set1){ print(item); }
set1.forEach((element) {
print('$element');
}); // 无返回值。
set1 = set1.map((element)=>element+1).toSet(); // map返回值为Iterable. -- map
set1 = set1.where((element) => element>=3).toSet(); // map返回值为Iterable. -- filter
var bSome = list.any((element) => element>=3); // 返回值为布尔值。 -- some
var bEvery = list.every((element) => element>=2); // 返回值为布尔值。 -- every
三、Map
映射(Maps)是无序的键值对。
定义
Map map1 = {
'name': 'topaz',
'age': 20,
};
var map2 = new Map(); // 不支持赋值
map2['name'] = 'topaz1'; // key-value赋值
map2['age'] = 25;
属性
Map map1 = {
'name': 'topaz',
'age': 20,
};
print(map1.keys.toList()); // keys和value返回值为Iterable
print(map1.values.toList());
print(map1.isEmpty); // 返回值为布尔值
print(map1.isNotEmpty);
方法
map1['height'] = 178;
map1.addAll({
'hobby': ['吃'],
});
map1.remove('name');
print(map1.containsKey('age')); // 返回布尔值 -- 是否存在某个key值
/// other methods ...
高级方法
— 参数为key和value — 没有for…of 和for…in
map1.forEach((key, value) {
print('$key -- $value');
});