Dart 集合类型 List Set Map 详解
1. List (列表对象)常用属性
void main() {
List myList = ['香蕉', '苹果', '西瓜'];
print(myList.length); //3
print(myList.isEmpty); //false
print(myList.isNotEmpty); //true
//翻转
print(myList.reversed); //(西瓜, 苹果, 香蕉)
var newMyList = myList.reversed.toList();
print(newMyList); //[西瓜, 苹果, 香蕉]
}
2. List (列表对象)常用方法
void main() {
List myList = ['香蕉', '苹果', '西瓜'];
// 增加数据,增加一个
myList.add('桃子'); //[香蕉, 苹果, 西瓜, 桃子]
print(myList);
// 拼接数组
myList.addAll(['葡萄', '提子']); //[香蕉, 苹果, 西瓜, 桃子, 葡萄, 提子]
print(myList);
}
void main() {
List myList = ['香蕉', '苹果', '西瓜'];
// indexOf 查找数据索引值
print(myList.indexOf('香蕉')); //0
print(myList.indexOf('葡萄')); //-1
}
void main() {
//删除数据
List myList_1 = ['香蕉', '苹果', '西瓜'];
List myList_2 = ['香蕉', '苹果', '西瓜'];
myList_1.remove('苹果');
print(myList_1); //[香蕉, 西瓜]
myList_2.removeAt(1);
print(myList_2); //[香蕉, 西瓜]
}
void main() {
//修改指定位置的数据
List myList_1 = ['香蕉', '苹果', '西瓜'];
myList_1.fillRange(1, 2, 'aaa');
print(myList_1); //[香蕉, aaa, 西瓜]
List myList_2 = ['香蕉', '苹果', '西瓜'];
myList_2.fillRange(1, 3, 'bbb');
print(myList_2); //[香蕉, bbb, bbb]
}
void main() {
//在指定位置插入数据
List myList_1 = ['香蕉', '苹果', '西瓜'];
myList_1.insert(1, 'aaa');
print(myList_1); //[香蕉, aaa, 苹果, 西瓜]
List myList_2 = ['香蕉', '苹果', '西瓜'];
myList_2.insertAll(1, ['aaa', 'bbb']);
print(myList_2); //[香蕉, aaa, bbb, 苹果, 西瓜]
}
void main() {
// List 转换成字符串
List myList = ['香蕉', '苹果', '西瓜'];
var str = myList.join('-');
print(str); //香蕉-苹果-西瓜
print(str is String); //true
}
void main() {
// 字符串转换成 List
var str = '香蕉-苹果-西瓜';
var myList = str.split('-');
print(myList); // [香蕉, 苹果, 西瓜]
print(myList is List); // true
}
3. Set 集合对象
Set 用它最主要的功能就是去除数组重复内容,Set 是没有顺序且不能重复的集合,所以不能通过索引去获取值
void main() {
var s = new Set();
s.add('香蕉');
s.add('苹果');
s.add('苹果');
print(s); // {香蕉, 苹果}
print(s.toList()); // [香蕉, 苹果]
}
void main() {
// 数组去重
List myList = ['香蕉', '苹果', '西瓜', '香蕉', '苹果', '香蕉', '苹果'];
var s = new Set();
s.addAll(myList);
print(s); // {香蕉, 苹果, 西瓜}
print(s.toList()); // [香蕉, 苹果, 西瓜]
}
4. Maps 映射对象
映射(Maps)是无序的键值对
void main() {
var person = {"name": "张三", "age": 20};
print(person); //{name: 张三, age: 20}
var m = new Map();
m['name'] = '李四';
m['age'] = 20;
print(m); //{name: 李四, age: 20}
}
4.1 Maps 映射对象常用属性
void main() {
Map person = {"name": "张三", "age": 20};
print(person.keys); //(name, age)
print(person.values); //(张三, 20)
print(person.keys.toList()); //[name, age]
print(person.values.toList()); //[张三, 20]
print(person.isEmpty); // false
print(person.isNotEmpty); // true
}
4.2 Maps 映射对象常用方法
void main() {
Map person = {"name": "张三", "age": 20, "sex": "男"};
person.addAll({
"work": ['敲代码', '送外卖'],
"height": 160
});
print(person); // {name: 张三, age: 20, sex: 男, work: [敲代码, 送外卖], height: 160}
}
void main() {
Map person = {"name": "张三", "age": 20, "sex": "男"};
person.remove("sex");
print(person); // {name: 张三, age: 20}
}
void main() {
Map person = {"name": "张三", "age": 20, "sex": "男"};
print(person.containsValue('张三')); // true
print(person.containsKey('name')); // true
}
void main() {
List myList = ['香蕉', '苹果', '西瓜'];
for (var item in myList) {
print(item);
// 香蕉
// 苹果
// 西瓜
}
}
void main() {
List myList = ['香蕉', '苹果', '西瓜'];
myList.forEach((value) {
print("$value");
});
// 香蕉
// 苹果
// 西瓜
}
void main() {
List myList = [1, 3, 4];
var newList = myList.map((value) {
return value * 2;
});
print(newList); // (2, 6, 8)
print(newList.toList()); // [2, 6, 8]
}
void main() {
List myList = [1, 3, 4, 5, 7, 8, 9];
var newList = myList.where((value) {
return value > 5;
});
print(newList); // (7, 8, 9)
print(newList.toList()); // [7, 8, 9]
}
void main() {
List myList = [1, 3, 4, 5, 7, 8, 9];
// 只要集合里面有满足条件的就返回 true
var f = myList.any((value) {
return value > 5;
});
print(f); // true
}
void main() {
List myList = [1, 3, 4, 5, 7, 8, 9];
// 每一个都满足条件返回 true,否则返回 false
var f = myList.every((value) {
return value > 5;
});
print(f); // false
}
void main() {
var s = new Set();
s.addAll([1, 22, 333]);
s.forEach((value) => print(value));
// 1
// 22
// 333
}
void main() {
Map person = {"name": "张三", "age": 20};
person.forEach((key, value) {
print("$key---$value");
// name---张三
// age---20
});
}