Dart集合类型 List Set Map详解

List里面常用的属性和方法:

1) 常用属性:

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

2)常用方法:

  • add 增加
  • addAll 拼接数组
  • indexOf 查找 传入具体值
  • remove 删除 传入具体值
  • removeAt 删除 传入索引值
  • fillRange 修改
  • insert(index,value); 指定位置插入
  • insertAll(index,list) 指定位置插入List
  • toList() 其他类型转换成List
  • join() List转换成字符串
  • split() 字符串转化成List
  • forEach
  • map
  • where
  • any
  • every

3)代码:

 var list=new List();
 list.add('111');      //add 增加元素
 list.add('222'); 
 print(list);          // [111, 222]


 List里面的属性:
    List myList=['香蕉','苹果','西瓜'];
    print(myList.length);             //3
    print(myList.isEmpty);            //false      
    print(myList.isNotEmpty);         //true
    print(myList.reversed);  //对列表倒序排序   (西瓜, 苹果, 香蕉)
    var newMyList=myList.reversed.toList();  其他类型转换成List
    print(newMyList);   //  [西瓜, 苹果, 香蕉]

    myList.add('桃子');   //增加数据  增加一个  [香蕉, 苹果, 西瓜, 桃子]
    myList.addAll(['桃子','葡萄']);  //拼接数组    [香蕉, 苹果, 西瓜, 桃子, 葡萄]
    print(myList.indexOf('苹x果'));    //indexOf查找数据 查找不到返回-1  查找到返回索引值

    myList.remove('西瓜');   //删除 传入具体值   [香蕉, 苹果]
    myList.removeAt(1);      //删除 传入索引值     [香蕉, 西瓜]
    myList.fillRange(1, 2,'aaa');  //修改    [香蕉, aaa, 西瓜]
    myList.fillRange(1, 3,'aaa');  //修改    [香蕉, aaa, aaa]
    var str=myList.join('-');   //list转换成字符串    香蕉-苹果-西瓜
    print(str is String)     //true


    var str='香蕉-苹果-西瓜';
    var list=str.split('-'); // 字符串转化成List
    print(list);            //[香蕉, 苹果, 西瓜]
    print(list is List);    //true

Set

用它最主要的功能就是去除数组重复内容
Set是没有顺序且不能重复的集合,所以不能通过索引去获取值

   var s=new Set();
   s.add('香蕉');
   s.add('苹果');
   //s.add('苹果'); //set不能添加重复的数据

   print(s);   //{香蕉, 苹果}

   print(s.toList());   //转成List
  List myList=['香蕉','苹果','西瓜','香蕉','苹果','香蕉','苹果'];

  var s=new Set();

  s.addAll(myList);

  print(s);   //{香蕉, 苹果, 西瓜} 去掉重复后的数据

  print(s.toList());  //转成list  [香蕉, 苹果, 西瓜]

Map

映射(Maps)是无序的键值对:

一、定义

  Map person={
    "name":"张三",
    "age":20
  }; 
  print(person);  //{name: 张三, age: 20}

  var m=new Map();
  m["name"]="李四";
  print(m);   //{name: 李四}

二、常用属性

keys 获取所有的key值
values 获取所有的value值
isEmpty 是否为空
isNotEmpty 是否不为空

    Map person = {
      "name":"张三",
      "age":20,
      "sex":"男"
    };

    print(person.keys.toList());     //获取所有的key值
    print(person.values.toList());   //获取所有的value值
    print(person.isEmpty);           //判断是否为空
    print(person.isNotEmpty);        //判断是否不为空

三、常用的方法

remove(key) 删除指定key的数据
addAll({...}) 合并映射 给映射内增加属性
containsValue 查看映射内的值 返回true/false

    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('张三'));   //true

forEach map where any every

针对List

forEach

  List myList=['香蕉','苹果','西瓜'];

  for(var i=0;i

修改数组的数据 map

   List myList=[1,3,4];

   List newList=new List();

   for(var i=0;i

查找数组

    List myList=[1,3,4,5,7,8,9];

    var newList=myList.where((value){
        return value>5;
    });
    print(newList.toList());  //[7, 8, 9]

只要有满足条件就返回true

   List myList=[1,3,4,5,7,8,9];

   var f=myList.any((value){   //只要集合里面有满足条件的就返回true
        return value>5;
   });
   print(f);   //true

每一个都满足条件返回true 否则返回false

    List myList=[1,3,4,5,7,8,9];
    var f=myList.every((value){   //每一个都满足条件返回true  否则返回false
       return value>5;
    });
    print(f);  //false

针对Set

      var s=new Set();

      s.addAll([1,222,333]);

      s.forEach((value)=>print(value));

针对Map

       Map person={
          "name":"张三",
          "age":20
       };

       person.forEach((key,value){            
           print("$key---$value");
       });

你可能感兴趣的:(Dart集合类型 List Set Map详解)