美文网首页
磨刀- 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

    ✨✨✨✨✨ 魏什么_多喝水 Flutter 之路 声明 常用属性 常用方法 插入 合并 删除 修改替换 查询 遍历...

  • Flutter 之路

    Dart 磨刀 - Flutter Mac 下环境搭建磨刀- 初识 Dart磨刀- Dart 关键字磨刀- Dar...

  • 25.Dart中Isolate的简单使用

    import 'dart:io'; import 'dart:isolate'; main(List args)...

  • 磨刀- 初识 Dart

    ✨✨✨✨✨ 魏什么_多喝水 Flutter 之路 人生若只如初见,何事秋风悲画扇 重要的点 在学习 Dart 语言...

  • 磨刀- Dart String

    ✨✨✨✨✨ 魏什么_多喝水 Flutter 之路 常用方法 字符串转数组 字符串切割 字符串是否b包含,或以xxx...

  • 磨刀- Dart 类

    ✨✨✨✨✨ 魏什么_多喝水 Flutter 之路 声明: 创建实例 构造函数 默认构造函数默认构造函数,如果类没有...

  • 磨刀- Dart Map

    ✨✨✨✨✨ 魏什么_多喝水 Flutter 之路 声明 属性 方法 遍历 清空 添加addall cast 泛型类...

  • 磨刀- Dart 函数

    ✨✨✨✨✨ 魏什么_多喝水 Flutter 之路 声明 参数 可选参数 可选命名参数: 可选位置参数

  • Dart基础:可迭代的集合

    Dart中的集合类型 Dart中常用的集合类型:List、Set、Map。其中List、Set实现了Iterabl...

  • 【Flutter】Dart语法篇之集合的使用与源码解析(二)

    一、List 在dart中的List集合是具有长度的可索引对象集合,它没有委托dart:collection包中集...

网友评论

      本文标题:磨刀- Dart List

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