List集合
void main() {
// List集合
List list = ['香蕉', '苹果', '西瓜'];
print(list); // [香蕉, 苹果, 西瓜]
print(list.length); // 3
print(list[0]); // 香蕉
list[1] = '橘子';
print(list); // [香蕉, 橘子, 西瓜]
list.add('葡萄');
print(list); // [香蕉, 橘子, 西瓜, 葡萄]
list.insert(1, '桃子');
print(list); // [香蕉, 桃子, 橘子, 西瓜, 葡萄]
// 可以插入多个
list.insertAll(1, ['aaa', 'bbb']);
print(list); // [香蕉, aaa, bbb, 桃子, 橘子, 西瓜, 葡萄]
list.remove('桃子');
print(list); // [香蕉, 橘子, 西瓜, 葡萄]
list.removeAt(1);
print(list); // [香蕉, 西瓜, 葡萄]
list.fillRange(1, 2, 'aaa');
print(list); // [香蕉, aaa, 葡萄]
print(list.indexOf('葡萄')); // 2 查找到返回索引,查找不到返回-1
list.sort();
print(list); // [aaa, 葡萄, 香蕉]
print(list.sublist(1)); // [葡萄, 香蕉]
list.forEach((value) {
print(value);
});
list.addAll(['aaa', 'bbb']);
print(list); // [aaa, 葡萄, 香蕉, aaa, bbb]
list.insertAll(1, ['aaa', 'bbb']);
print(list); // [aaa, aaa, bbb, 葡萄, 香蕉, aaa, bbb]
// list转换成字符串
var str = list.join('-');
print(str); // aaa-aaa-bbb-葡萄-香蕉-aaa-bbb
// 字符串转换成list
var list2 = str.split('-');
print(list2); // [aaa, aaa, bbb, 葡萄, 香蕉, aaa, bbb]
// list 去重
var list3 = ['aaa', 'aaa', 'bbb', 'ccc'];
var list4 = new Set();
list4.addAll(list3);
print(list4); // {aaa, bbb, ccc} Set集合 不能重复
print(list4.toList()); // [aaa, bbb, ccc]
// aaa
// 葡萄
// 香蕉
// 常用属性:
// length 长度
// reversed 翻转
// isEmpty 是否为空
// isNotEmpty 是否不为空
// 常用方法:
// add 增加
// insert(index,value) 指定位置增加
// remove() 删除
// removeAt(index) 删除指定位置
// fillRange(start,end,value) 修改
// indexOf() 查找索引
// sort() 排序
// sublist(start,end) 截取范围内的值
// forEach() 循环打印
// addAll() 拼接数组
// insertAll(index,list) 指定位置拼接数组
// toList() 其他类型转换成List
// join() List转换成字符串
// split() 字符串转换成List
// map() 将集合中的每一个元素都执行同一个方法
}
Map集合
void main() {
var person = {
"name": '张三',
"age": 20,
"work": ['程序员', '送外卖']
};
print(person); // {name: 张三, age: 20, work: [程序员, 送外卖]}
// 常用属性:
// keys 获取所有的key值
print(person.keys); // (name, age, work)
// values 获取所有的value值
print(person.values); // (张三, 20, [程序员, 送外卖])
// isEmpty 是否为空
print(person.isEmpty); // false
// isNotEmpty 是否不为空
print(person.isNotEmpty); // true
// 常用方法:
// remove(key) 删除指定key的数据
person.remove('age');
print(person); // {name: 张三, work: [程序员, 送外卖]}
// addAll({...}) 合并映射 给映射内增加属性
person.addAll({"height": 1.88});
print(person); // {name: 张三, work: [程序员, 送外卖], height: 1.88}
// containsValue 查看映射内的值 返回true/false
print(person.containsValue('张三')); // true
// forEach
person.forEach((key, value) {
print(key); // name work height
print(value); // 张三 [程序员, 送外卖] 1.88
});
// map
var map = person.map((key, value) {
return MapEntry(value, key);
});
print(map); // {张三: name, [程序员, 送外卖]: work, 1.88: height}
// where
var map2 = person.values.where((value) {
return value == 'name';
});
print(map2); // {name: 张三}
// any 只要有一个满足条件就返回true
var map3 = person.values.any((value) {
return value == '张三';
});
print(map3); // true
// every 每一项都要满足条件
var map4 = person.values.every((value) {
return value == 'name';
});
print(map4); // false
// toJson
print(person['name']); // 张三
print(person['age']); // null
print(person['work']); // [程序员, 送外卖]
var list = person.values.toList();
print(list); // [张三, [程序员, 送外卖], 1.88]
print(list[0]); // 张三
}
Set集合
// Set集合
void main() {
var s = new Set();
s.add('香蕉');
s.add('苹果');
s.add('西瓜');
s.add('香蕉');
print(s); // {香蕉, 苹果, 西瓜}
// 常用属性:
// length 长度
print(s.length); // 3
// isEmpty 是否为空
print(s.isEmpty); // false
// isNotEmpty 是否不为空
print(s.isNotEmpty); // true
// 常用方法:
// add 增加
s.add('aaa');
print(s); // {香蕉, 苹果, 西瓜, aaa}
// addAll({...}) 拼接数组
s.addAll(['bbb', 'ccc']);
print(s); // {香蕉, 苹果, 西瓜, aaa, bbb, ccc}
// contains() 查看Set集合内是否包含某个元素 返回true/false
print(s.contains('aaa')); // true
// remove() 删除某个元素
s.remove('aaa');
print(s); // {香蕉, 苹果, 西瓜, bbb, ccc}
// forEach
s.forEach((value) {
print(value);
});
// Set没有索引,不能单独获取某个值
// print(s[0]); // 报错
// toList() 将Set集合转换成List集合
var list = s.toList();
print(list); // [香蕉, 苹果, 西瓜, bbb, ccc]
print(list[0]); // 香蕉
}