4、Dart中集合类型和循环语句

468 阅读3分钟

一、List

1.创建list的方法

  //方法1
  var l1 = ["张三", 20, true];
  var l1 = <String>["张三", '20', 'true'];

  //方法2
  List li = ["张三", 20, true];
  List li = <String>["张三", '20', 'true'];
  
  //方法3
  var li = List.filled(2, "");

2.List里面常用的属性和方法

常用属性:
    length          长度
    reversed        数组翻转(倒序排序)
    isEmpty         是否为空
    isNotEmpty      是否不为空
    
常用方法:  
    add         增加(增加一个)==>add('新值')
    addAll      拼接数组(增加多个,传入数组)==>addAll(['值1','值2','值3'])
    indexOf     查找  传入具体值==>indexOf('具体值'),有值返回索引,无值返回-1
    remove      删除  传入具体值==>remove('具体值')
    removeAt    删除  传入索引值==>removeAt(index)
    fillRange   修改 ==> fillRange(开始位置(index1),结束位置(index2),修改值)
    insert(index,value);            指定位置插入    
    insertAll(index,list)           指定位置插入List
    toList()    其他类型转换成List  
    join()      List转换成字符串
    split()     字符串转化成List
    
循环方法:
    forEach   
    map
    where
    any
    every

二、Set

Set是没有顺序且不能重复的集合,所以不能通过索引去获取值,它最主要的功能就是去重。实例如下:

  var name = new Set();
  name.add('小明');
  name.add('小红');
  name.add('小明');
  print(name.toList());

image.png

可以看出,向数组中添加了两个小明,但是打印结果只有一个,因为Dart对数组进行了去重的操作。

我们经常使用的去重方法是通过循环,Dart中就可以通过Set来实现数组去重,如下:

  var student = ['小明', '小红', '小兰', '小明'];
  var students = new Set();
  students.addAll(student);
  print(students.toList());

image.png

感觉这样还是有点麻烦,当然Dart提供了更简单的方法toSet(),如下:

 var student = ['小明', '小红', '小兰', '小明'];
 print(student.toSet().toList()); //去重后,转换为List

三、Map

映射(Maps)类似Json对象的形式, 是无序的键值对:

常用属性:
    keys            获取所有的key值
    values          获取所有的value值
    isEmpty         是否为空
    isNotEmpty      是否不为空
    
常用方法:
    remove(key)     删除指定key的数据
    addAll({...})   合并映射  给映射内增加属性
    containsValue   查看映射内的值  返回true/false
    
循环方法:
    forEach   
    map
    where
    any
    every

Maps声明方法可以查看本专栏第二篇笔记:juejin.cn/post/706261…

四、循环语句

这几种循环方法,在List、Set、Map中都可以使用

基本循环方法:
    for
    for in ==>for(var item in List数组){}
    while
    do while
其他循环方法:
    forEach   
    map
    where
    any
    every
    

实例如下:

var name = ['小明', '小红', '小兰', '小明'];
 //forEach
 name.forEach((e) {
   print(e);
 });

 //map 修改数据,返回新数组
 var newName = name.map((e) {
   return 'name: $e';
 });
 print(newName);

 //where 将满足条件的结果返回新集合
 var list = [1, 2, 3, 4, 5, 6];
 var num = list.where((e) {
   return e > 3;
 });
 print(num);

 //any 判断集合中是否有满足条件的数据(只要有一个满足就可以),有则返回true,没有就返回false,
 var list2 = [1, 2, 3, 4, 5, 6];
 var num2 = list.any((e) {
   return e > 6;
 });
 print(num2);

 //every 判断集合中每一个数据是都满足条件(所有数据都要满足),满足则返回true,否则就返回false,
 var list3 = [1, 2, 3, 4, 5, 6];
 var num3 = list.every((e) {
   return e > 0;
 });
 print(num3);

image.png