flutter学习笔记之Dart-4List、Set和Map

一、List  可以添加重复相同的数据

var list=['小明','小强','小马','小张','小王'];
/*插入相关*/
list.insert(1, 'aaa');//表示从索引1开始插入一个数据
print(list);//[小明, aaa, 小强, 小马, 小张, 小王]
list.insertAll(2, ['bbb','ccc']);//表示从索引1开始插入一个新集合
print(list);//[小明, bbb, ccc, aaa, 小强, 小马, 小张, 小王]
/*添加相关*/
list.add("aa");//表示在末尾添加数据
print(list);//[小明, aaa, bbb, ccc, 小强, 小马, 小张, 小王, aa]
list.addAll(["bb",'cc']);//表示在末尾添加多个数据
print(list);//[小明, aaa, bbb, ccc, 小强, 小马, 小张, 小王, aa, bb, cc]
/*获取集合个数*/
print(list.length);//11 返回集合中数据的个数
/*删除相关*/
print(list.removeLast());//移除集合末尾的一条数据,返回移除的数据
print(list.remove(list[1]));//移除集合中某个数值,返回bool值,true则表示移除成功
print(list.removeAt(1));//移除集合中指定索引的数值,返回移除的数据
print(list);//[小明, ccc, 小强, 小马, 小张, 小王, aa, bb]
list.removeRange(2, 5);//删除索引[2,5]数据,包含开头结尾
print(list);//[小明, ccc, 小王, aa, bb]
list.removeWhere((element) => element=='小明');//删除指定判断的元素
print(list);//[ccc, 小王, aa, bb]
list=['小明','小强','小明','小张','小马','小张','小王'];
/*获取索引*/
print(list.indexOf('小张'));//3 获取指定元素首次出现的索引,没有返回-1
print(list.indexWhere((element) => element=='小张'));//3 获取符合条件的元素首次出现的索引,没有返回-1
print(list.lastIndexOf('小张'));// 5 获取指定元素最后出现的索引,没有返回-1
print(list.lastIndexWhere((element) => element=='小张'));//5 获取符合条件的元素最后出现的索引,没有返回-1
/*替换*/
print(list);//[小明, 小强, 小明, 小张, 小马, 小张, 小王]
list.fillRange(2, 3,'小明王');//[) 从左边索引位置开始替换,替换到右边索引位置,左包含右不包含
print(list);//[小明, 小强, 小明王, 小张, 小马, 小张, 小王]
list.replaceRange(2, 3, ['aa','bb','cc']);//[) 从左边索引位置开始替换,替换到右边索引位置,左包含右不包含
print(list);//[小明, 小强, aa, bb, cc, 小张, 小马, 小张, 小王]
/*前后颠倒顺序*/
print(list.reversed.toList());//不改变原集合 [小王, 小张, 小马, 小张, cc, bb, aa, 小强, 小明]
/*集合非空判断*/
print(list.isEmpty);//false 空返回true
print(list.isNotEmpty);//true 非空返回true
/*转换为Map*/
print(list.asMap());//不改变原集合 {0: 小明, 1: 小强, 2: aa, 3: bb, 4: cc, 5: 小张, 6: 小马, 7: 小张, 8: 小王}
print(list);//不改变原集合 [小明, 小强, aa, bb, cc, 小张, 小马, 小张, 小王]
/*转换成字符串*/
String listString=list.join('-');
print(listString);//不改变原集合 小明-小强-aa-bb-cc-小张-小马-小张-小王
/*再转为集合*/
print(listString.split('-'));

二、Set  不可以添加重复相同的数据

var set = {'小明', '小强', '小马', '小张', '小王'};
print(set);
/*添加数据*/
set.add('aa'); //添加一条数据
set.addAll(['bb', 'cc']); 添加一组数据
print(set); //{小明, 小强, 小马, 小张, 小王, aa, bb, cc}
/*获取集合个数*/
print(set.length); //8
/*删除数据*/
set.remove('cc'); //删除指定元素,成功则返回true
print(set); //{小明, 小强, 小马, 小张, 小王, aa, bb}
set.removeWhere((element) => element == 'bb'); //删除符合条件的元素
print(set); //{小明, 小强, 小马, 小张, 小王, aa}
set.removeAll({'小李', 'aa'}); //删除指定集合中存在的元素
print(set); //{小明, 小强, 小马, 小张, 小王}
/*集合非空判断*/
print(set.isEmpty);//false 空返回true
print(set.isNotEmpty);//true 非空返回true
/*获取末尾的元素*/
print(set.last);//小王

三、Map 键值对实现

var map = new Map();
/*添加数据*/
map['name'] = '小马哥';
map['age'] = 28;
print(map); //{name: 小马哥, age: 28}
var map1 = {'sex': '男', 'age': 18};
map.addAll(map1); //
print(map); //{name: 小马哥, age: 18, sex: 男} 重复key的值会被替换,不重复则会添加
/*获取所有key值*/
print(map.keys.toList()); //[name, age, sex]
/*获取所有value值*/
print(map.values.toList()); //[小马哥, 18, 男]
/*获取个数*/
print(map.length); //3
/*删除数据*/
map.remove('sex');
print(map); //{name: 小马哥, age: 18}
map.removeWhere((key, value) => key == 'age' && value == 18); //删除指定条件的数据
print(map); //{name: 小马哥}
/*集合非空判断*/
print(map.isEmpty); //false 空返回true
print(map.isNotEmpty); //true 非空返回true
/*集合中是否包含指定key*/
print(map.containsKey('name'));//包含key返回true
/*集合中是否包含指定value*/
print(map.containsValue('小马哥'));//包含value返回true
/*更新数据*/
map.update('name', (value) => 'null');//将key为name的值更新为null
print(map);//{name: null}
map['age']=27;
map.updateAll((key, value) => 'sss');//更新所有值为sss
print(map);//{name: sss, age: sss}

Set配合List实现去重操作

var list=['小明','小强','小明','小张','小马','小张','小王'];
print(list);//[小明, 小强, 小明, 小张, 小马, 小张, 小王]
var set=new Set();
set.addAll(list);//将list添加到set中
print(set);//{小明, 小强, 小张, 小马, 小王}
var newList=set.toList();//将set转换为新list
print(newList);//[小明, 小强, 小张, 小马, 小王]

都有的方法:

1、forEach方法 可以选择性打印数据和循环遍历

2、map方法 处理每一个集合中的对象,并返回一个结果

3、where方法 过滤集合中的值,并返回一个集合

4、any方法 判断集合中的值是否符合条件,只有有一个符合就返回true

5、every方法 判断集合中的值是否符合条件,只有都符合才返回true

遍历

List遍历
var list = ['小明', '小强', '小马', '小张', '小王'];
for(int i=0;i<list.length;i++){
  print(list[i]);
}
print('******************************');
list.forEach((element) {//element就是值
  print(element);
});
print('******************************');
for(var element in list){
  print(element);
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值