10. Dart集合类型List set Map详解以及相关循环语句

目录
文章目录隐藏
  1. List 列表类型

List 列表类型

常用属性:

  • length 长度
  • reversed 翻转
  • isEmpty 是否为空
  • isNotEmpty 是否不为空

常用方法:

  • add() 增加
  • addAll() 拼接数组
  • indexOf() 查找方法,传入具体值
  • remove() 删除方法,传入具体值
  • removeAt() 删除方法,传入索引值
  • fillRange() 修改方法,3 个参数,第一个参数起始位置(包含),第二个参数结束位置(不包含),第三个参数为要修改的数据。
  • insert(index,value) 第一个参数指定位置插入,第二个参数要插入的数据
  • insertAll(index,list) 第一个参数指定位置插入,第二个参数要插入的 List 数据
  • toList() 其他类型转换成 List
  • join() 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 中的函数。

「点点赞赏,手留余香」

0

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
码云笔记 » 10. Dart集合类型List set Map详解以及相关循环语句

发表回复