Dart语言中的List、Set、Map学习笔记

一、List(列表)

  1. 定义与初始化

    • 可以使用方括号直接初始化列表:

      dart 复制代码
      var list1 = [1, 2, 3]; // 类型自动推断
      List<int> list2 = [4, 5, 6]; // 明确指定元素类型为int
  2. 常用属性

    • length

      • 获取列表中元素的数量。
      dart 复制代码
      var fruits = ['apple', 'banana', 'cherry'];
      print(fruits.length); // 输出3
    • reversed

      • 返回一个反向迭代的视图。
      dart 复制代码
      var reversedFruits = fruits.reversed;
      reversedFruits.forEach((fruit) => print(fruit));
    • isEmpty和isNotEmpty

      • 判断列表是否为空或不为空。
      dart 复制代码
      var emptyList = [];
      print(emptyList.isEmpty); // 输出true
      print([1, 2].isNotEmpty); // 输出true
  3. 常用方法

    • add

      • 在列表末尾添加元素。
      dart 复制代码
      var numbers = [1, 2];
      numbers.add(3);
      print(numbers); // 输出[1, 2, 3]
    • addAll

      • 将另一个可迭代对象的元素添加到列表末尾。
      dart 复制代码
      var listA = [1, 2];
      var listB = [3, 4];
      listA.addAll(listB);
      print(listA); // 输出[1, 2, 3, 4]
    • indexOf

      • 查找元素在列表中的索引,找不到返回 - 1。
      dart 复制代码
      var fruits = ['apple', 'banana', 'cherry'];
      print(fruits.indexOf('banana')); // 输出1
    • remove和removeAt

      • remove根据值删除元素,removeAt根据索引删除元素。
      dart 复制代码
      var fruits = ['apple', 'banana', 'cherry'];
      fruits.remove('banana');
      print(fruits); // 输出['apple', 'cherry']
      fruits.removeAt(0);
      print(fruits); // 输出['cherry']
    • fillRange

      • 修改列表中指定范围的元素。
      dart 复制代码
      var list = [1, 2, 3, 4, 5];
      list.fillRange(1, 3, 9);
      print(list); // 输出[1, 9, 9, 4, 5]
    • insert和insertAll

      • insert在指定位置插入一个元素,insertAll在指定位置插入一个列表。
      dart 复制代码
      var fruits = ['apple', 'banana'];
      fruits.insert(1, 'avocado');
      print(fruits); // 输出['apple', 'avocado', 'banana']
      var newFruits = ['guava', 'honeydew'];
      fruits.insertAll(2, newFruits);
      print(fruits); // 输出['apple', 'avocado', 'guava', 'honeydew', 'banana']
    • toList()

      • 将其他类型转换为List。
      dart 复制代码
      var set = {'a', 'b', 'c'};
      var listFromSet = set.toList();
      print(listFromSet); // 输出['a', 'b', 'c']
    • join()

      • 将列表元素连接成字符串。
      dart 复制代码
      var words = ['Hello', 'World'];
      print(words.join(' ')); // 输出'Hello World'
    • split()

      • 通常用于字符串操作,将字符串分割成列表。
      dart 复制代码
      var text = 'a,b,c';
      var parts = text.split(',');
      print(parts); // 输出['a', 'b', 'c']
    • forEach

      • 对列表每个元素执行操作。
      dart 复制代码
      var numbers = [1, 2, 3];
      numbers.forEach((num) => print(num));
    • map

      • 对列表元素应用函数并返回新的可迭代对象。
      dart 复制代码
      var numbers = [1, 2, 3];
      var squared = numbers.map((num) => num * num);
      print(squared); // 输出(1, 4, 9)
    • where

      • 筛选满足条件的元素。
      dart 复制代码
      var numbers = [1, 2, 3];
      var evenNumbers = numbers.where((num) => num % 2 == 0);
      print(evenNumbers); // 输出(2)
    • any和every

      • any判断是否存在满足条件的元素,every判断所有元素是否满足条件。
      dart 复制代码
      var numbers = [1, 2, 3];
      print(numbers.any((num) => num % 2 == 0)); // 输出true
      print(numbers.every((num) => num % 2 == 0)); // 输出false

二、Set(集合)

  1. 定义与初始化

    • 可以使用大括号直接初始化集合:

      dart 复制代码
      var set1 = {'a', 'b', 'c'}; // 类型自动推断
      Set<int> set2 = {1, 2, 3}; // 明确指定元素类型为int
  2. 特性

    • 集合元素具有唯一性。

      dart 复制代码
      var set = {1, 2, 2, 3};
      print(set); // 输出{1, 2, 3}
  3. 常用操作

    • 添加元素

      • 使用 add 方法。
      dart 复制代码
      var fruitSet = {'apple', 'banana'};
      fruitSet.add('cherry');
      print(fruitSet); // 输出{'apple', 'banana', 'cherry'}
    • 删除元素

      • 使用 remove 方法。
      dart 复制代码
      var fruitSet = {'apple', 'banana'};
      fruitSet.remove('apple');
      print(fruitSet); // 输出{'banana'}
    • 检查元素是否存在

      • 使用 contains 方法。
      dart 复制代码
      var fruitSet = {'apple', 'banana'};
      print(fruitSet.contains('banana')); // 输出true
    • 集合运算

      • 并集

        dart 复制代码
        Set<int> setA = {1, 2, 3};
        Set<int> setB = {3, 4, 5};
        Set<int> unionSet = setA.union(setB);
        print(unionSet); // 输出{1, 2, 3, 4, 5}
      • 交集

        dart 复制代码
        Set<int> setA = {1, 2, 3};
        Set<int> setB = {3, 4, 5};
        Set<int> intersectionSet = setA.intersection(setB);
        print(intersectionSet); // 输出{3}
      • 差集

        dart 复制代码
        Set<int> setA = {1, 2, 3};
        Set<int> setB = {3, 4, 5};
        Set<int> differenceSetA = setA.difference(setB);
        print(differenceSetA); // 输出{1, 2}

三、Map(映射)

  1. 定义与初始化

    • 可以使用大括号初始化Map:

      dart 复制代码
      var map1 = {'key1': 'value1', 'key2': 'value2'}; // 类型自动推断
      Map<String, int> map2 = {'a': 1, 'b': 2}; // 明确指定键和值的类型
  2. 常用操作

    • 获取值

      • 通过键获取值。
      dart 复制代码
      var ages = {'Alice': 20, 'Bob': 22};
      print(ages['Alice']); // 输出20
    • 添加和修改键值对

      • 添加新键值对或修改现有键值对。
      dart 复制代码
      var ages = {'Alice': 20, 'Bob': 22};
      ages['Charlie'] = 25; // 添加
      ages['Alice'] = 21; // 修改
      print(ages);
    • 删除键值对

      • 使用 remove 方法。
      dart 复制代码
      var ages = {'Alice': 20, 'Bob': 22};
      ages.remove('Bob');
      print(ages);
    • 检查键是否存在

      • 使用 containsKey 方法。
      dart 复制代码
      var ages = {'Alice': 20, 'Bob': 22};
      print(ages.containsKey('Alice')); // 输出true
    • 遍历Map

      • 使用 forEach 方法。
      dart 复制代码
      var ages = {'Alice': 20, 'Bob': 22};
      ages.forEach((key, value) => print('$key: $value'));
相关推荐
半夏知半秋43 分钟前
unity打包流程整理-Windows/Mac/Linux平台
windows·笔记·学习·macos·unity·游戏引擎
君逸~~1 小时前
RK3568(二)——字符设备驱动开发
linux·驱动开发·笔记·学习·rk3568
Octopus20771 小时前
【C++】AVL树
开发语言·c++·笔记·学习
不修×蝙蝠1 小时前
搭建Tomcat(一)---Socket&ServerSocket
java·服务器·笔记·tomcat·socket·serversocket
奶香臭豆腐2 小时前
C++ 泛编程 —— 函数模板(中)
开发语言·c++·学习
●VON2 小时前
go语言的成神之路-标准库篇-os标准库
linux·运维·服务器·开发语言·后端·学习·golang
星河梦瑾2 小时前
【2025最新版】搭建个人博客教程
linux·经验分享·笔记·python·安全
虾球xz2 小时前
游戏引擎学习第41天
学习·算法·游戏引擎
HE10292 小时前
时间序列绘图1
学习·信息可视化
IOT.FIVE.NO.13 小时前
Linux学习笔记15 何为HDD,SSD?sata?PCIE?分区,MBR,GPT分区的理解
linux·笔记·学习