美文网首页
磨刀- Dart List

磨刀- Dart List

作者: 态度哥 | 来源:发表于2020-03-01 22:32 被阅读0次

    ✨✨✨✨✨ 魏什么_多喝水 Flutter 之路

    声明

      var list1 = List();//不限定长度,不限定类型,可添加任意类型
      List<dynamic> list2 = List(); //不加泛型的,默认都是dynamic 支持任何类型
      List list3 = List(2);///限定长度为2
      List<String> list4 = List(); //限定数据为String,加入其它数据会报错
    
      var list5 = [1,2,3];//初始赋值,限定了长度、类型
      print(list5[2]);
      list5[1] = 100; //可以直接去修改值
      print(list5); //[1,100,3
    
    

    常用属性

      List<String> cusList = List();
      cusList.add('111');
      cusList.add('222');
      cusList.add('333');
    
      print(cusList.length); //3
      print(cusList.isEmpty);//是否为空
      print(cusList.isNotEmpty);
    
      print(cusList.reversed); //(333, 222, 111)    //倒叙输出
      print(cusList.first); //111
      print(cusList.last);//333
    

    常用方法

      cusList.add('444');
      print(cusList); // [111, 222, 333, 444] 添加
      List<String> list7 = List();
      list7.add('555');
      list7.add('666');
      cusList.addAll(list7); //allAll 合并两个list
      print(cusList);//[111, 222, 333, 444, 555, 666]
    

    插入

      list7.insert(0, '000');  //insert 插入 在第0个位置插入 000
      print(list7); //[000, 555, 666]
    
    
      list7.insertAll(1, ['1','2','3','4']);  //insertAll在指定位置插入list ,其余顺延
      print(list7);  //  [000, 1, 2, 3, 4, 555, 666]
    

    合并

      Iterable<String> list8 = list7.followedBy(['8','9']); //followedBy 拼接两个数组,返回一个元组
      print(list8);  // (000, 1, 2, 3, 4, 555, 666, 8, 9)
      print(list8.toList()); //转为list [000, 1, 2, 3, 4, 555, 666, 8, 9]
      print(list8.toList(growable: false)); //[000, 1, 2, 3, 4, 555, 666, 8, 9]
                                            // growable=false  表示生成的List的长度固定  不可再增加新元素
    

    删除

    ///删除
      print('list8-->$list8');
      List<String> list9 = List();
      list9.add('1');
      list9.add('2');
      list9.add('3');
      list9.add('4');
      list9.add('5');
      list9.add('6');
    
      list9.remove('1'); //删除元素  //[2, 3, 4]
      print(list9);
      list9.removeAt(0);  //根据索引删除 [3, 4, 5, 6]
      print(list9);
      list9.removeLast(); //删除最后一个元素 [3, 4, 5]
      print(list9);
      list9.removeRange(0,2); //删除一定的范围(从0开始到2-1 , 顾头不顾尾)  [5]
      print(list9);
      list9.removeWhere((element){ //根据条件删除, 删除元素值为5的元素
         return element=="5";
      });
    
      list9.clear();  //清空数组
      print(list9);   //  []
    

    修改替换

      List<String> list10 = List();
      list10.add('0');
      list10.add('1');
      list10.add('2');
      list10.add('3');
      list10.add('4');
      list10.add('5');
      list10.add('6');
    
      list10[1] = '123'; //直接修改指定位置的值
      print(list10); //[0, 123, 2, 3, 4, 5, 6]
    
      list10.setRange(0, 3, ['456','789','000']); //修改指定范围的值,顾头不顾尾. [n,m,value] n到m-1
      print(list10); //[456, 789, 000, 3, 4, 5, 6]
    
      list10.replaceRange(0, 3, ['0','1','2']); //替换指定范围的值,和setRange一样
      print(list10); //[0, 1, 2, 3, 4, 5, 6]
    
      list10.fillRange(0, 3,'100'); // 0 - 3 每个元素用value替换
      print(list10); //[100, 100, 100, 3, 4, 5, 6]
    
      list10.setAll(1, ['111','222','333']); //从索引看是,使用list内的元素逐个替换原list中的元素
      print(list10); //[100, 111, 222, 333, 4, 5, 6]
    

    查询

      List<int> list11 = List();
      list11.add(1);
      list11.add(2);
      list11.add(3);
      list11.add(4);
      list11.add(5);
      list11.add(6);
      list11.add(7);
      list11.add(8);
      list11.add(9);
      list11.add(10);
    
      List<String> list12 = List();
      list12.add('a');
      list12.add('b');
      list12.add('c');
      list12.add('d');
      list12.add('e');
      list12.add('f');
      list12.add('g');
      list12.add('h');
      list12.add('i');
      list12.add('j');
    
    
      print(list11[5]);//查看指定索引位置的值  //6
      print(list12.elementAt(5)); //获取指定索引位置的元素 // f
      print(list11.first);//查看第一个元素
      print(list11.last); //查看最后一个元素
    
      int index1 = list12.indexOf('f'); //默认0开始查找,返回指定元素的索引
      print(index1); // 5
      int index2 = list12.indexOf('b',4); //从索引4开始查找指定元素,如果存在返回元素索引,否则返回-1
      print(index2); //-1
      int index3 = list12.lastIndexOf('i',1); //从后往前查找. 从指定索引位置,开始往前找,找不到返回 -1 .默认是list.count
      print(index3); // 8
    
      list11.retainWhere((element) => (element > 4)); //根据条件保留元素
      print(list11); //[5, 6, 7, 8, 9, 10]
    
    
      bool result = list12.any((element)=>(element=='f'));//判断list中元素是否有任何一个元素满足条件.如果有返回true,否则返回false
      print(result); //true
    
    
      bool reslut1 = list11.every((element) => (element>0));//判断list中每个元素是否都符合条件
      print(reslut1); //true
      bool reslut2 = list11.every((element) => (element%2==0));
      print(reslut2); //false
    
      list12.contains('f');//是否存在某个元素
      
      
      int result3 = list11.firstWhere((element) => (element>4)) ;//返回第一个满足条件的元素
      print(result3); // c
    
      //返回第一个满足条件的元素,不满足返回orElse的值
      int result4 = list11.firstWhere((element) => (element>115),orElse: ()=>(100));
      print(result4);
    
    

    遍历

    //forEach:  遍历每个元素,此时不可add或remove,否则报错,但可以修改元素值
    list11.forEach((element){
        list11[4] = 1026;
      });
      print(list11); //[5, 6, 7, 8, 1026, 10]
      
      for (var value in list11){
        print(value);
      }
      
      //map: 遍历list中的每一个元素,并处理返回一个新的Iterable可迭代类型
      Iterable<String> reslut5 = list11.map((element)=>(element>100?'a':'b'));
      print(reslut5); //(b, b, b, b, a, b)
    
      //fold:根据现有的List和给定的initValue,指定一个参数函数规则,对List每个元素做操作,并将结果返回。
      int result6 = list11.fold(2, (a,element)=>(a*element)); //
      print(result6);
    
    

    Set

    在 Dart 中,set 是一个无序的,元素唯一的集合。 因为一个 set 是无序的,所以无法通过下标(位置)获取 set 中的元素。

    var ingredients = Set();
    ingredients.addAll(['gold', 'titanium', 'xenon']);
    assert(ingredients.length == 3);
    
    // 添加一个重复的元素是无效的。
    ingredients.add('gold');
    assert(ingredients.length == 3);
    
    // 从 set 中移除一个元素。
    ingredients.remove('gold');
    assert(ingredients.length == 2);
    

    交集

    交集 是另外两个 set 中的公共元素组成的 set 。

    var ingredients = Set();
    ingredients.addAll(['gold', 'titanium', 'xenon']);
    
    // 创建两个 set 的交集。
    var nobleGases = Set.from(['xenon', 'argon']);
    var intersection = ingredients.intersection(nobleGases);
    assert(intersection.length == 1);
    assert(intersection.contains('xenon'));
    

    相关文章

      网友评论

          本文标题:磨刀- Dart List

          本文链接:https://www.haomeiwen.com/subject/ewlxoctx.html