10. Dart集合类型List set Map详解以及相关循环语句
目录
文章目录隐藏
List 列表类型
常用属性:
length
长度reversed
翻转isEmpty
是否为空isNotEmpty
是否不为空
常用方法:
add()
增加addAll()
拼接数组indexOf()
查找方法,传入具体值remove()
删除方法,传入具体值removeAt()
删除方法,传入索引值fillRange()
修改方法,3 个参数,第一个参数起始位置(包含),第二个参数结束位置(不包含),第三个参数为要修改的数据。insert(index,value)
第一个参数指定位置插入,第二个参数要插入的数据insertAll(index,list)
第一个参数指定位置插入,第二个参数要插入的 List 数据toList()
其他类型转换成 Listjoin()
List 转换成字符串split()
字符串转化成 List
声明变量
//1、声明时直接赋值 List cars= {'奔驰', '宝马', '劳斯莱斯幻影'}; //2、先声明再赋值,new 在 dart 中可以省略 Set book= new Set(); book.add('码云'); book.add('码云笔记'); book.add('技术博客'); print(cars); //{奔驰, 宝马, 劳斯莱斯幻影} print(book); //{码云, 码云笔记, 技术博客}
List 属性
void main() { List myList = ['mybj', '技术博客', '前端教程']; print(myList.length); print(myList.isEmpty); print(myList.isNotEmpty); print(myList.reversed); //对列表倒序排序 var newMyList = myList.reversed.toList(); //对列表先倒序再转换成 List print(newMyList); }
运行结果:
3 false true (前端教程, 技术博客, mybj) [前端教程, 技术博客, mybj]
List 里面的方法
增加数据
void main() { List myList = ['香蕉', '苹果', '西瓜']; myList.add('桃子'); //增加数据 增加一个 print(myList); myList.addAll(['车厘子', '葡萄']); //拼接数组 print(myList); }
运行结果:
[香蕉, 苹果, 西瓜, 桃子] [香蕉, 苹果, 西瓜, 桃子, 车厘子, 葡萄]
查找数据
void main() { List myList = ['香蕉', '苹果', '西瓜']; print(myList.indexOf('苹 x 果')); //indexOf 查找数据,查找不到返回-1,查找到返回索引值 }
运行结果:
-1
删除数据
void main() { List myList = ['Dart', 'JavaScript', 'Vue']; myList.remove('Vue'); print(myList); myList.removeAt(1); print(myList); }
运行结果:
[Dart, JavaScript] [Dart]
修改数据
void main() { List myList = ['Dart', 'JavaScript', 'Vue']; myList.fillRange(1, 2, 'Flutter'); //修改一个数据 print(myList); myList.fillRange(1, 3, 'React'); //修改多个数据 print(myList); }
运行结果:
[Dart, Flutter, Vue] [Dart, React, React]
插入数据
void main() { List myList = ['Dart', 'JavaScript', 'Vue']; myList.insert(1, 'java'); //插入 一个 print(myList); myList.insertAll(1, ['html', 'php']); //插入 多个 print(myList); }
运行结果:
[Dart, java, JavaScript, Vue] [Dart, html, php, java, JavaScript, Vue]
数组与其它类型互转
join()
方法:
void main() { List myList = ['前端', '后端', '都是 IT']; //list 转换成字符串 var str = myList.join('-'); print(str); //前端-后端-都是 IT print(str is String); //true }
split()
方法:
void main() { var str = '前端-后端-都是 IT'; // 按指定字符将字符串分割成数组 var list = str.split('-'); print(list); //[前端, 后端, 都是 IT] print(list is List); // true }
Set 集合类型
Set 用它最主要的功能就是去除数组重复内容,它是没有顺序且不能重复的集合,所以不能通过索引去获取值。
void main() { var setA = new Set(); setA.add('前端'); setA.add('后端'); // 无法添加重复的数据 setA.add('前端'); print(setA); //{前端, 后端} print(setA.toList()); // [前端, 后端] List myList = ['前端博客', '前端开发', '前端教程', '前端博客', '前端开发', '前端博客', '前端开发']; var setB = new Set(); setB.addAll(myList);// 对数组进行去重 print(setB); // {前端博客, 前端开发, 前端教程} print(setB.toList()); // [前端博客, 前端开发, 前端教程] }
Map 映射类型
常用属性:
keys
获取所有的 key 值values
获取所有的 value 值isEmpty
是否为空isNotEmpty
是否不为空
常用方法:
remove(key)
删除指定 key 的数据addAll({...})
合并映射 给映射内增加属性containsValue
查看映射内的值 返回 true/false
1. 映射类型的表示方法
void main() { // 映射类型表示方法 Map person = {"name": "张三", "age": 20}; // 初始化及添加属性和值 var man = new Map(); man["name"] = "李四"; print(person);// {name: 张三, age: 20} print(man);// {name: 李四} }
2. Map 映射类型常用属性
void main() { Map person = {"name": "张三", "age": 20, "sex": "男"}; // 获取所有属性 print(person.keys.toList());// [name, age, sex] // 获取所有值 print(person.values.toList());// [张三, 20, 男] // 判断是否为空 print(person.isEmpty);// false // 判断是否非空 print(person.isNotEmpty);// true }
3. 映射类性常用方法
void main() { Map person = {"name": "刘能", "age": 20, "sex": "男"}; // 添加属性和值 person.addAll({ "work": ['搬砖', '跳舞'], "height": 160 }); print(person); // {name: 刘能, age: 20, sex: 男, work: [搬砖, 跳舞], height: 160} // 移除属性 person.remove("sex"); print(person); // {name: 刘能, age: 20, work: [搬砖, 跳舞], height: 160} print(person.containsValue('160'));// false }
列表与集合常用的循环方法
void main() { List myList = ['前端', '后端']; for (var i = 0; i < myList.length; i++) { print(myList[i]); // 前端 // 后端 } for (var item in myList) { print(item); // 前端 // 后端 } myList.forEach((value) { print("$value"); // 前端 // 后端 }); Map person = {"name": "谢大脚", "age": 30}; person.forEach((key, value) { print("$key,$value"); // name,谢大脚 // age,30 }); List oldList = [1, 3, 4]; var newList = oldList.map((value) { return value * 2; }); print(newList.toList()); // [2, 6, 8] }
列表与集合常用的过滤方法
void main() { List myList = [1, 3, 4, 5, 7, 8, 9]; // where 所有满足条件的集合 var newList = myList.where((value) { return value > 5; }); print(newList.toList());// [7, 8, 9] // any 只要集合里面有满足条件的就返回 true var flagA = myList.any((value) { return value > 5; }); print(flagA);// true // every 集合里面所有都满足条件返回 true 否则返回 false var flagB = myList.every((value) { return value > 5; }); print(flagB);// false }
以上就是 Dart 集合类型 List set Map 详解以及循环语句 forEach、map、where 、any、every 的用法。下节我们学习 Dart 中的函数。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
码云笔记 » 10. Dart集合类型List set Map详解以及相关循环语句
码云笔记 » 10. Dart集合类型List set Map详解以及相关循环语句