# 10.集合类型

# list

/**
 * List里面常用的属性和方法
 * 
 *  常用属性:
 *        length      长度
 *        reversed    翻转
 *        isEmpty     是否为空
 *        isNotEmpty  是否不为空
 *  常用方法:
 *        add         增加
 *        addAll      拼接数组
 *        indexOf     查找  传入具体值
 *        remove      删除  传入具体值
 *        removeAt    删除  传入索引值
 *        fillRange   修改
 *        insert(index,value)    指定位置插入
 *        insertAll(index,list)  指定位置插入List
 *        toList()               其他类型转换成List
 *        join()                 List转换成字符串
 *        split()                字符串转化为List
 *        forEach()
 *        map()
 *        where()
 *        any()
 *        every()
 */
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

# set

/**
 * Set
 * 
 * 用它最主要的功能就是去除数组重复内容
 * Set是没有顺序且不能重复的集合, 所以不能铜鼓索引去获取值
 */

void main() {
  var s = new Set();
  s.add('香蕉');
  s.add('苹果');
  s.add('苹果');

  print(s);          // {香蕉, 苹果}
  print(s.toList()); // [香蕉, 苹果]

  // 数组去重
  List mylist = ['香蕉', '苹果', '西瓜', '香蕉', '苹果', '西瓜',];
  var s1 = new Set();
  s1.addAll(mylist);
  print(s1);    // {香蕉, 苹果, 西瓜}
  print(s1.toList());    // [香蕉, 苹果, 西瓜]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

# map

/**
 * 映射(Maps) 是无序的键值对
 * 
 * 常用属性:
 *    keys            获取所有的key值
 *    values          获取所有的value值
 *    isEmpty         是否为空
 *    isNotEmpty      是否不为空
 * 常用方法:
 *    remove(key)     删除指定key的数据
 *    addAll({...})   合并映射, 给映射内增加属性
 *    containesValue  查看映射内的值, 返回true/false
 *    forEach
 *    map
 *    where
 *    any
 *    every
 */
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# forEach

void main() {
  // list
  List myList = ['香蕉','苹果','西瓜'];

  myList.forEach((value) {
    print(value);  // 香蕉 苹果 西瓜
  });

  // set
  var s = new Set();
  s.addAll([111,222,333]);
  s.forEach((value)=>print(value)); // 111 222 333

  // map
  Map person = {
    "name":"张三",
    "age":20
  };

  person.forEach((key, value){
    print('$key----$value');  // name----张三   age----20
  });
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

# map

void main() {
  List myList = [1,3,4];

  var newList = myList.map((value) {
    return value*2;
  });
  print(newList.toList());  // [2, 6, 8]
}
1
2
3
4
5
6
7
8

# where

void main() {
  List myList = [1,3,4,5,7,8,9];

  var newList = myList.where((value) {
    return value>5;
  });
  print(newList.toList());  // [7, 8, 9]
}
1
2
3
4
5
6
7
8

# any

void main() {
  List myList = [1,3,4,5,7,8,9];

  // 只要集合里面有满足条件的就返回true, 类似于js中的some
  var f = myList.any((value) {   
    return value>5;
  });
  print(f);  // true
}
1
2
3
4
5
6
7
8
9

# every

void main() {
  List myList = [1,3,4,5,7,8,9];

  // 全部满足条件的就返回true, 类似于js中的every
  var f = myList.every((value) {   
    return value>5;
  });
  print(f);  // false
}
1
2
3
4
5
6
7
8
9
上次更新: 2021/2/21 下午7:52:17