0%

Dart学习笔记 (四)

List常用属性和方法 , Set , Map(字典,映射)的常用方法和属性 , 常用循环遍历方法 , 使用循环语句修改list内容where , any , map , every

List常用属性和方法

  • 常用属性

    • length(长度) , reversed(反转) , isEmpty(为空) , isNotEmpty(不为空)
  • 常用方法

    • add(增加) , addAll(拼接数组) , indexOf(查找,传入具体值) , remove(删除,传入具体值) , removeAt(删除,传入索引值) , fillRange(修改) , insert(index,value)(指定位置插入) , toList()(其他类型转换为List) , insertAll(index,list)(指定位置插入List) , Join()(List转换为字符串) , split()(字符串转换为List) , forEach , map , where , any , every

    例1:常用属性

    1
    2
    3
    4
    5
    6
    7
    List myList=['大','中','小'];
    print(myList.length); //输出: 3
    print(myList.isEmpty); //输出: false
    print(myList.isNotEmpty); //输出: true
    print(myList.reversed); //输出: (小,中,大) 经过反转后并不是list类型
    var newList=myList.reversed.toList();
    print(newList); //输出: [小,中,大] 使用toList转换为list类型

    例2:常用方法

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    add
    List myList=['大','中','小'];
    myList.add('特大'); //add方法增加数组内容,但一次只能添加一个
    print(myList); //输出: [大, 中, 小, 特大]
    addAll
    List myList=['大','中','小'];
    myList.addAll(['特大','特特大']); //addAll可以看做是数组拼接,吧括号中的数组和原数组进行拼接
    print(myList); //输出: [大, 中, 小, 特大,特特大]
    indexOf
    List myList=['大','中','小'];
    var a=myList.indexOf('小'); //传入想要查询的具体内容,如果该数组中有则返回索引值,没有的话返回-1
    print(a); //输出: 2 这是小在数组中的索引值
    remove
    List myList=['大','中','小'];
    myList.remove('小'); //传入想要删除的具体内容
    print(myList); //小被删除了所以输出: [大,中]
    removeAt
    List myList=['大','中','小'];
    myList.removeAt(2); //传入想要删除的索引值,小的索引值是012里的2
    print(myList); //小被删除了所以输出: [大,中]
    fillRange
    List myList=['大','中','小'];
    myList.fillRange(2,3,'超小'); //传入起始位置和结束位置的索引值,然后传入要修改的内容,索引值位置模板[0'大'1'中'2'小'3] (start,end,value)
    print(myList); //经过修改 输出: [大, 中, 超小]

    myList.fillRange(1,3,'超小'); //也可以一次性修改多项
    print(myList); //输出: [大,超小,超小]
    insert
    List myList=['大','中','小'];
    myList.insert(3, '超小'); //填写要插入的位置 和 要插入的内容[0'大'1'中'2'小'3]
    print(myList); //输出: [大, 中, 小, 超小] insert只能插入一个内容
    insertAll
    List myList=['大','中','小'];
    myList.insertAll(1, ['特大','特小']); //可插入数组(多个内容)
    print(myList); //输出: [大, 特大, 特小, 中, 小]
    Join
    List myList=['大','中','小'];
    var a=myList.join(' '); //Join方法可把数组转换为字符串 ('引号')中传入如何间隔
    var b=myList.join('-'); //可以传入空格也可以使用,- 等等
    print(a); //输出: 大 中 小
    print(b); //输出: 大-中-小
    split
    var str='苹果-香蕉-桃子'; //字符串 如果是str='苹果,香蕉,桃子'则split传入','
    var list=str.split('-'); //用split方法 以-为分隔符来切割内容组成数组
    print(list); //输出: [苹果, 香蕉, 桃子]

Set

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

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

    例: Set的使用方式

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Set a={'aaa','bbb','aaa'};
    print(a); //输出: {aaa, bbb}

    var s=new Set();
    s.add('张三');
    s.add('李四');
    s.add('李四');
    print(s); //输出: {张三, 李四}
    print(s.toList()); //输出: [张三, 李四]

    var l=new List();
    l.add('张三');
    l.add('李四');
    l.add('李四');
    print(l); //输出: [张三, 李四, 李四]
    print(l.toSet()); //输出: {张三, 李四}
    print(l.toSet().toList()); //输出: [张三, 李四]

    List list=['苹果','香蕉','西瓜','西瓜','香蕉','西瓜'];
    var s=new Set();
    s.addAll(list); //必须使用addAll,不然会被看做为一个整体数组
    print(s); //输出: {苹果, 香蕉, 西瓜}
    print(s.toList()); //输出: [苹果, 香蕉, 西瓜]

Map(字典,映射)的常用方法和属性

  • 常用属性

    • keys(获取所有key值) , values(获取所有value值) , isEmpty(是否为空) , isNotEmpty(是否不为空)
  • 常用方法

    • remove(key) : 删除指定key的数据
    • addAll({…}) : 合并映射,给映射内增加属性
    • containsValue(value) : 查看映射内的值,返回true/false
    • map , forEach , where , any , every

    例1:常用属性

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Map person={
    'name':'老念',
    'age':25,
    'sex':'男'
    };
    print(person); //输出: {name: 老念, age: 25, sex: 男}
    print(person.keys); //输出: (name, age, sex)
    print(person.keys.toList()); //输出: [name, age, sex]
    print(person.values.toList()); //输出: [老念, 25, 男]
    print(person.isEmpty); //输出: false
    print(person.isNotEmpty); //输出: true

    例2:常用方法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    remove(key)
    Map person={
    'name':'老念',
    'age':25,
    'sex':'男'
    };
    person.remove('sex');
    print(person); //输出: {name: 老念, age: 25}
    addAll
    Map person={
    'name':'老念',
    'age':25,
    'sex':'男'
    };
    person.addAll({'work':['送外卖','敲代码'],'height':165});
    print(person); //输出: {name: 老念, age: 25, sex: 男, work: [送外卖, 敲代码], height: 165}
    containsValue
    Map person={
    'name':'老念',
    'age':25,
    'sex':'男'
    };
    print(person.containsValue('老念')); //输出: true containsKey(key)使用方法相同

常用循环语句循环遍历

  • 使用循环语句循环遍历打印所有内容有许多方法常用如下

    • for循环 , for…in , forEach
  • 例1:使用for循环循环遍历

    1
    2
    3
    4
    var list=['张三','李四','王五','老念'];
    for(var i=0;i<list.length;i++){
    print(list[i]);
    } //输出: 张三 李四 王五 老念
  • 例2:使用for…in循环遍历

    1
    2
    3
    4
    var list=['张三','李四','王五','老念'];
    for(var itme in list){
    print(itme);
    } //输出: 张三 李四 王五 老念
  • 例3:使用forEach循环遍历

    1
    2
    3
    4
    var list=['张三','李四','王五','老念'];
    list.forEach((value){ //forEach((key,value){})因为list只有一个内容所以只填写一个
    print(value);
    }); //输出: 张三 李四 王五 老念

    使用循环语句修改list内容

  • map , where , any , every

    • map:循环遍历修改数据
    • where:条件判断,满足条件的返回为一个新的集合
    • any:条件判断有满足条件的则返回true,没有则返回false
    • every:条件判断,所有数据都满足条件则返回true,有一个没有满足条件就返回false
  • 例1:使用for循环修改内容,给list每个数据X2并返回一个新的数组

    1
    2
    3
    4
    5
    6
    var myList=[1,3,4,5];
    var newList=new List();
    for(var i=0;i<myList.length;i++){
    newList.add(myList[i]*2);
    }
    print(newList); //输出: [2, 6, 8, 10]
  • 例2:使用map方法修改内容,给list每个数据X2并返回一个新的数组

    1
    2
    3
    4
    5
    6
    var myList=[1,3,4,5];                      
    var newList=myList.map((value){ //虽然forEach也可以做到但是据说很可能会出问题所以一般用map方法
    return value*2;
    });
    print(newList); //输出: (2, 6, 8, 10)
    print(newList.toList()); //输出: [2, 6, 8, 10]
  • 例3:使用where,将满足条件的数据组成一个新的数组

    1
    2
    3
    4
    5
    var myList=[1,3,4,5];
    var newList=myList.where((value){
    return value>3;
    });
    print(newList.toList()); //输出: [4,5]
  • 例4:使用any判断该数组是否有大于3的数据

    1
    2
    3
    4
    5
    var myList=[1,3,4,5];
    var f=myList.any((value){
    return value>3;
    });
    print(f); //输出: true
  • 例5:使用every判断该数组是否所有数据都大于3

    1
    2
    3
    4
    5
    var myList=[1,3,4,5];
    var f=myList.every((value){
    return value>3;
    });
    print(f); //输出: false
-------------本文有底学海无涯-------------