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

发布于:2024-12-07 ⋅ 阅读:(90) ⋅ 点赞:(0)

一、List(列表)

  1. 定义与初始化
    • 可以使用方括号直接初始化列表:
      var list1 = [1, 2, 3]; // 类型自动推断
      List<int> list2 = [4, 5, 6]; // 明确指定元素类型为int
      
  2. 常用属性
    • length
      • 获取列表中元素的数量。
      var fruits = ['apple', 'banana', 'cherry'];
      print(fruits.length); // 输出3
      
    • reversed
      • 返回一个反向迭代的视图。
      var reversedFruits = fruits.reversed;
      reversedFruits.forEach((fruit) => print(fruit));
      
    • isEmpty和isNotEmpty
      • 判断列表是否为空或不为空。
      var emptyList = [];
      print(emptyList.isEmpty); // 输出true
      print([1, 2].isNotEmpty); // 输出true
      
  3. 常用方法
    • add
      • 在列表末尾添加元素。
      var numbers = [1, 2];
      numbers.add(3);
      print(numbers); // 输出[1, 2, 3]
      
    • addAll
      • 将另一个可迭代对象的元素添加到列表末尾。
      var listA = [1, 2];
      var listB = [3, 4];
      listA.addAll(listB);
      print(listA); // 输出[1, 2, 3, 4]
      
    • indexOf
      • 查找元素在列表中的索引,找不到返回 - 1。
      var fruits = ['apple', 'banana', 'cherry'];
      print(fruits.indexOf('banana')); // 输出1
      
    • remove和removeAt
      • remove根据值删除元素,removeAt根据索引删除元素。
      var fruits = ['apple', 'banana', 'cherry'];
      fruits.remove('banana');
      print(fruits); // 输出['apple', 'cherry']
      fruits.removeAt(0);
      print(fruits); // 输出['cherry']
      
    • fillRange
      • 修改列表中指定范围的元素。
      var list = [1, 2, 3, 4, 5];
      list.fillRange(1, 3, 9);
      print(list); // 输出[1, 9, 9, 4, 5]
      
    • insert和insertAll
      • insert在指定位置插入一个元素,insertAll在指定位置插入一个列表。
      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。
      var set = {'a', 'b', 'c'};
      var listFromSet = set.toList();
      print(listFromSet); // 输出['a', 'b', 'c']
      
    • join()
      • 将列表元素连接成字符串。
      var words = ['Hello', 'World'];
      print(words.join(' ')); // 输出'Hello World'
      
    • split()
      • 通常用于字符串操作,将字符串分割成列表。
      var text = 'a,b,c';
      var parts = text.split(',');
      print(parts); // 输出['a', 'b', 'c']
      
    • forEach
      • 对列表每个元素执行操作。
      var numbers = [1, 2, 3];
      numbers.forEach((num) => print(num));
      
    • map
      • 对列表元素应用函数并返回新的可迭代对象。
      var numbers = [1, 2, 3];
      var squared = numbers.map((num) => num * num);
      print(squared); // 输出(1, 4, 9)
      
    • where
      • 筛选满足条件的元素。
      var numbers = [1, 2, 3];
      var evenNumbers = numbers.where((num) => num % 2 == 0);
      print(evenNumbers); // 输出(2)
      
    • any和every
      • any判断是否存在满足条件的元素,every判断所有元素是否满足条件。
      var numbers = [1, 2, 3];
      print(numbers.any((num) => num % 2 == 0)); // 输出true
      print(numbers.every((num) => num % 2 == 0)); // 输出false
      

二、Set(集合)

  1. 定义与初始化
    • 可以使用大括号直接初始化集合:
      var set1 = {'a', 'b', 'c'}; // 类型自动推断
      Set<int> set2 = {1, 2, 3}; // 明确指定元素类型为int
      
  2. 特性
    • 集合元素具有唯一性。
      var set = {1, 2, 2, 3};
      print(set); // 输出{1, 2, 3}
      
  3. 常用操作
    • 添加元素
      • 使用 add 方法。
      var fruitSet = {'apple', 'banana'};
      fruitSet.add('cherry');
      print(fruitSet); // 输出{'apple', 'banana', 'cherry'}
      
    • 删除元素
      • 使用 remove 方法。
      var fruitSet = {'apple', 'banana'};
      fruitSet.remove('apple');
      print(fruitSet); // 输出{'banana'}
      
    • 检查元素是否存在
      • 使用 contains 方法。
      var fruitSet = {'apple', 'banana'};
      print(fruitSet.contains('banana')); // 输出true
      
    • 集合运算
      • 并集
        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}
        
      • 交集
        Set<int> setA = {1, 2, 3};
        Set<int> setB = {3, 4, 5};
        Set<int> intersectionSet = setA.intersection(setB);
        print(intersectionSet); // 输出{3}
        
      • 差集
        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:
      var map1 = {'key1': 'value1', 'key2': 'value2'}; // 类型自动推断
      Map<String, int> map2 = {'a': 1, 'b': 2}; // 明确指定键和值的类型
      
  2. 常用操作
    • 获取值
      • 通过键获取值。
      var ages = {'Alice': 20, 'Bob': 22};
      print(ages['Alice']); // 输出20
      
    • 添加和修改键值对
      • 添加新键值对或修改现有键值对。
      var ages = {'Alice': 20, 'Bob': 22};
      ages['Charlie'] = 25; // 添加
      ages['Alice'] = 21; // 修改
      print(ages);
      
    • 删除键值对
      • 使用 remove 方法。
      var ages = {'Alice': 20, 'Bob': 22};
      ages.remove('Bob');
      print(ages);
      
    • 检查键是否存在
      • 使用 containsKey 方法。
      var ages = {'Alice': 20, 'Bob': 22};
      print(ages.containsKey('Alice')); // 输出true
      
    • 遍历Map
      • 使用 forEach 方法。
      var ages = {'Alice': 20, 'Bob': 22};
      ages.forEach((key, value) => print('$key: $value'));