zoukankan      html  css  js  c++  java
  • Flutter之List

    void listDemo() {
      // 1.list的创建
      listCreate();
      // 2.多种类型的输出
      listPrint();
      // 3.添加数据
      listAddElement();
      // 4.删除数据
      listRemoveElement();
      // 5.更改列表元素
      changeTheListElements();
      // 按顺序迭代列表
      List<String> names = ["Alice", "Daphne", "Elizabeth", "Joanna"];
      names.forEach((name){
        print(name);
      });
    }
    

    1.List创建及属性

    void listCreate() {
      // 固定长度的列表,一旦定义就无法改变长度
      List<int> fixedLengthList = List(5);
      fixedLengthList[0] = 66;
      print(fixedLengthList);
      print(fixedLengthList[0]);
    
      // 可改变长度的列表,可以根据需要改变长度
      List<int> growableList =[];
      growableList.add(100);
      growableList.length = 5;
      growableList[4] = 100;
      growableList[1] = 1;
      print(growableList);
      List growableListB = List(500);
      print(growableListB.length);
      List fa = [1,2,5];
      // 不可变列表
      List fb = List.unmodifiable(fa); 
      // fb[0] = 100;
      // fb.removeLast();
      print(fb);
      // 可变列表
      List fc = List.from(fa); 
      fc[0] = 100;
      print(fc);
      
      // 创建一个长度为4值为1的列表,为所有元素统一赋值
      List fd = List<int>.filled(4, 1); 
      print(fd);
      List e = [14,20,3,4];
      // 用生成器给所有元素赋初始值
      List fe = List<int>.generate(4, (int index){ // 也是可变数组
        print(index);
        return e[index];
      });
      // 相关属性
      print(fe);
      print(fe.first);
      print(fe.last);
      print(fe.hashCode);
      print(fe.isEmpty);
      print(fe.isNotEmpty);
      print(fe.iterator); // 返回一个新的迭代器 不知道有啥用
      print(fe.reversed);
      print(fe.removeLast());
      print(fe);
      print(fe.runtimeType);
      fe.length = 1;
      print(fe.single); // 列表是否是只有一个元素,否则报错
    }
    

    2.返回多种类型的输出

    void listPrint(){
      List growableList = List.from([1,2,3,4,5]);
      // 返回列表的字符串表示
      String string = growableList.toString();
      print(string);
      // 返回列表的集合表示
      print(growableList.toSet());
      // 返回字符串的列表表示
      print(growableList.toList());
      // 用指定字符连接列表元素
      print(growableList.join(','));
    
      print('---------分割线---------');
    
      // 各种查询输出方法
      List<String> names = ['Abbey', 'Fallon', 'Xenia', 'Callie', 'Callie'];
      // 列表中是否包含指定元素
      print(names.contains('Fallon'));
      // 返回列表中的第几个元素
      print(names.elementAt(2));
      print(names[2]);
      // 返回列表中第一个匹配元素的下标
      print(names.indexOf('Callie'));
      // 返回列表中最后一个匹配元素的下标
      print(names.lastIndexOf('Callie'));
    
      List<String> colors = ['red', 'green', 'blue', 'orange', 'pink'];
      // 返回从开始下标(包括)到结束下标(不包括)元素的列表
      print(colors.sublist(1, 3));
      // 返回从开始下标(包括)到最后一个元素的列表
      print(colors.sublist(1));
    }
    

    3.添加元素

    void listAddElement(){
      List growableList = List();
      // 增加一个元素到末尾
      growableList.add(100);
      // 增加一个元素到指定下标
      int index = 0;
      dynamic element = 20;
      print(growableList.length);
      growableList.insert(index, element);
      print(growableList);
      // 增加一个列表到列表末尾
      List list = [20,3];
      growableList.addAll(list);
      print(growableList);
      // 增加一个列表到指定位置
      growableList.insertAll(index, list);
      print(growableList);
    }
    

    4.删除元素

    void listRemoveElement(){
      List list = [1,2,3,4,3,4,5];
      print(list);
      // 删除列表中匹配的第一个元素
      list.remove(3);
      print(list);
      // 移除列表中第几一个元素
      list.removeAt(1);
      print(list);
      // 移除列表中最后一个元素
      list.removeLast();
      // 移除列表的所有元素
      list.clear();
      print(list);
      List listA = [1,2,3,4,5];
      // listA.replaceRange(start, end, replacement)
      // 删除并替换开始下标(包括)至结束下标(不包括)内的元素
    //   /**Removes the objects in the range [start] inclusive to [end] exclusive and inserts the contents of [replacement] in its place.
    // List<int> list = [1, 2, 3, 4, 5];
    // list.replaceRange(1, 4, [6, 7]);
    // list.join(', '); // '1, 6, 7, 5'
    // The provide range, given by [start] and [end], must be valid. A range from [start] to [end] is valid if 0 <= start <= end <= len, where len is this list's length. The range starts at start and has length end - start. An empty range (with end == start) is valid.
    
    // This method does not work on fixed-length lists, even when [replacement] has the same number of elements as the replaced range. In that case use [setRange] instead *//
      listA.replaceRange(1, 4, [6,'a',8]);
      print(listA);
      List listB = [1,2,3,4,5];
      // listA.replaceRange(start, end, replacement)
      // 删除并替换开始下标(包括)至结束下标(不包括)内的元素
      listB.removeRange(1, 4);
      print(listB);// [1,5]
      List<String> numberA = ['one','two','trhee','four'];
      // 从此列表中删除满足的所有对象。
      numberA.removeWhere((item){
        return item.length == 3;
      });
      print(numberA);
    }
    

    5.对列表元素做一些改动

    void changeTheListElements() {
      List<String> listA = ['a', 'b', 'c','d'];
      // 从第几个元素开始覆盖原列表
      /**List.setAll(int index, Iterable<String> iterable) → void
       * 此操作不会增加此长度。
       * [index]必须是非负数且不大于[length]。
       * [iterable]的元素数量不能超过[index]到[length]的元素。
       * 如果iterable基于此列表,则其值可能会在/ setAll期间/更改 */
      listA.setAll(1, ['bee', 'sea']);
      print(listA);
    
      List<int> listB = [1, 2, 3, 4, 5];
      // 对列表进行随机排序
      listB.shuffle();
      print(listB);
    
      // 对列表进行顺序排序
      /** 
       * List.sort([(int, int) → int compare]) → void
       * 根据[compare]函数指定的顺序对此列表进行排序。
       * [compare]函数必须充当[Comparator]。
       * 
       */
    
      List<String> numbers = ['two','three', 'four'];
      // Sort from shortest to longest.
      numbers.sort((a, b) => a.length.compareTo(b.length));
      print(numbers);  // [two, four, three]
      // The default List implementations use [Comparable.compare] if [compare] is omitted.
      List<int> nums = [13, 2, -11];
      nums.sort();
      print(nums);  // [-11, 2, 13]
    }




    链接:https://www.jianshu.com/p/29828eceb2fd

  • 相关阅读:
    * 结束Activity
    进度条ProgressBar
    StackView实现叠加在一起的图片循环移动像循环队列一样
    AdapterViewFlipper功能 自动播放的图片库
    Spinner功能和用法
    SimpleAdapter 网络视图:带预览的图片浏览器
    AutoCompleteTextView
    Faster R-CNN
    Fast R-CNN
    100个大型机器学习数据集汇总(CV/NLP/音频方向)
  • 原文地址:https://www.cnblogs.com/ckAng/p/10670338.html
Copyright © 2011-2022 走看看