Dart--List、Map和Set使用

95 阅读2分钟

1.List

常用属性有:

1)length 长度

2)reversed 翻转

  1. isEmpty 是否为空

4)isNotEmpty 是否不为空

常用方法有:

1)add 增加

2)addAll 拼接数组

3)indexOf 查找 传入具体值

  1. remove 删除 传入具体值

  2. removeAt 删除 传入索引值

  3. fillRange 修改

7)insert(idnex,value) 指定位置插入

8)insertAll 指定位置插入List

9)toList 其他类型转换成List

  1. join List转换成字符串

11)split 字符串转换成List

//1.List的常用属性
  List<String> list = ['aa', 'bbb', 'ccc'];
  print(list.length);
  print(list.isEmpty);
  print(list.isNotEmpty);
  print(list.reversed);
  print(list.reversed.toList()); //reversed转成的类型不是List

  //2.List中的常用方法
  //2.1 add addAll
  List<String> fruitList = ['苹果', '香蕉'];
  fruitList.add('橙子');
  print(fruitList);
  fruitList.addAll(['猕猴桃', '车厘子']);
  print(fruitList);

  //2.2 indexOf查看元素所在的索引,没有则返回-1
  print(fruitList.indexOf('苹果xx'));
  print(fruitList.indexOf('车厘子'));

  //2.3 remove  removeAt 删除元素
  fruitList.remove('车厘子');
  print(fruitList);
  fruitList.removeAt(0);
  print(fruitList);

  //2.4fillRange 指定区间的元素修改为指定的内容
  fruitList.fillRange(1, 3, "aaa");
  //集合的第2和3项都会修改为aaa
  print(fruitList);

  //2.5 insert  insertAll在指定位置插入数据
  fruitList.insert(1, 'bbb');
  print(fruitList);
  fruitList.insertAll(1, ['111', '222']);
  print(fruitList);

  //2.6 join 将List转换成字符串
  print(fruitList.join(','));

  //2.7 split 将字符串分割,变成一个List
  String str = '111-222-333';
  List<String> numList = str.split('-');
  print(numList);

2.Set

它最主要的功能就是去除数组重复内容

Set是没有顺序且不能重复的集合,所以不能通过索引去获取值

//1.set的基本使用
  Set<String> set = new Set();
  set.add('苹果');
  set.add('香蕉');
  set.add('苹果');
  print(set);

  //2.使用Set对List中的重复数据进行过滤
  List<String> fruitList = ['苹果', '香蕉', '菠萝', '苹果'];
  Set<String> fruitSet = new Set();
  fruitSet.addAll(fruitList);
  print(fruitSet);
  print(fruitSet.toList());

3.Map

Map是无序的键值对。

常用的属性:

keys 获取所有的key值

values 获取所有的value值

isEmpty 是否为空

isNotEmpty 是否不为空

常用的方法:

remove(key) 删除指定key的数据

addAll({...}) 合并映射 给映射增加属性

containsValue 查看映射内的值 返回true/false

//1.第一种方式
  Map<String, Object> map1 = {"name": 'xiaoming', "age": 20};

  //第二种方式
  Map<String, Object> map2 = new Map();
  map2['name'] = 'zhangsan';
  print(map1);
  print(map2);

  //常用属性
  print(map2.keys.toList());
  print(map2.values.toList());
  print(map2.isEmpty);
  print(map2.isNotEmpty);

  //添加键值对
  //1.第一种方式
  map2['height'] = 30;
  print(map2);
  //2.第二种方式 addAll
  map2.addAll({
    "work": ['语文', '数学'],
    "hobby": ['篮球', '足球']
  });
  print(map2);

  //是否含有某个键或者值
  print(map2.containsKey('hobby'));
  print(map2.containsValue(30));

4.foreach、map、where、any和where操作

forEach List、Map、Set皆有

map 变换操作

where 筛选操作

any 一个为真皆为真

every 所有为真才为真

//List
  //1.for循环
  List<String> list = ['111', '222', '333'];
  for (int i = 0; i < list.length; i++) {
    print(list[i]);
  }
  for (String item in list) {
    print('item:$item');
  }

  //2.foreach循环
  list.forEach((element) {
    print(element);
  });

  //map方法转换List
  List<int> numList = [1, 2, 3, 4, 5];
  Iterable<int> newList = numList.map((e) {
    return e * e;
  });
  print(newList);

  //where
  Iterable<int> filterList = numList.where((element) => element > 3);
  print(filterList);

  //any 任意一个为真,则为真
  //every 所有的为真,则为真
  print(numList.any((element) => element >= 0));
  print(numList.every((element) => element > 5));

  //Map的forEach
  Map<String, Object> pairList = {"name": 'xiaoming', "age": 20};
  pairList.forEach((key, value) {
    print('key:$key,value:$value');
  });

  //Set的forEach用法
  Set<String> animalSet = new Set();
  animalSet.add('狮子');
  animalSet.add('老虎');
  animalSet.forEach((element) {
    print('element:$element');
  });

以上的这些属性和方法在实际开发中用得还是很频繁的,熟悉这些的灵活运用能提升开发效率。