Flutter学习笔记1.4 Dart基础(List Set M
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
//只要集合里面有满足条件的就返回true
every
/每一个都满足条件返回true 否则返回false
示例代码:
void main() {
List myList = ['香蕉', '苹果', '西瓜'];
print(myList[1]);
var list = new List(); //新版本没法使用
list.add('111');
list.add('222');
print(list);
//List里面的属性:
List myList = ['香蕉', '苹果', '西瓜'];
print(myList.length);
print(myList.isEmpty);
print(myList.isNotEmpty);
print(myList.reversed); //对列表倒序排序
var newMyList = myList.reversed.toList();
print(newMyList);
//List里面的方法:
List myList = ['香蕉', '苹果', '西瓜'];
myList.add('桃子'); //增加数据 增加一个
myList.addAll(['桃子', '葡萄']); //拼接数组
print(myList);
print(myList.indexOf('苹x果')); //indexOf查找数据 查找不到返回-1 查找到返回索引值
myList.remove('西瓜');
myList.removeAt(1);
print(myList);
List myList = ['香蕉', '苹果', '西瓜'];
myList.fillRange(1, 2, 'aaa'); //修改
myList.fillRange(1, 3, 'aaa');
myList.insert(1, 'aaa'); //插入 一个
myList.insertAll(1, ['aaa', 'bbb']); //插入 多个
print(myList);
List myList = ['香蕉', '苹果', '西瓜'];
var str = myList.join('-'); //list转换成字符串
print(str);
print(str is String); //true
var str = '香蕉-苹果-西瓜';
var list = str.split('-');
print(list);
print(list is List);
}
Set集合
1.用它最主要的功能就是去除数组重复内容
2.Set是没有顺序且不能重复的集合,所以不能通过索引去获取值
void main(){
var s=new Set();
s.add('香蕉');
s.add('苹果');
s.add('苹果');
print(s); //{香蕉, 苹果}
print(s.toList());
List myList=['香蕉','苹果','西瓜','香蕉','苹果','香蕉','苹果'];
var s=new Set();
s.addAll(myList);
print(s);
print(s.toList());
}
Maps集合
映射(Maps)是无序的键值对:
常用属性:
keys
获取所有的key值
values
获取所有的value值
sEmpty
是否为空
isNotEmpty
是否不为空
常用方法:
remove(key)
删除指定key的数据
addAll({...})
合并映射 给映射内增加属性
containsValue
查看映射内的值 返回true/false
forEach
map
where
any
every
示例代码:
void main() {
Map person = {"name": "张三", "age": 20};
var m = new Map();
m["name"] = "李四";
print(person);
print(m);
//常用属性:
Map person = {"name": "张三", "age": 20, "sex": "男"};
print(person.keys.toList());
print(person.values.toList());
print(person.isEmpty);
print(person.isNotEmpty);
//常用方法:
Map person = {"name": "张三", "age": 20, "sex": "男"};
person.addAll({
"work": ['敲代码', '送外卖'],
"height": 160
});
print(person);
person.remove("sex");
print(person);
print(person.containsValue('张三'));
}
操作符 forEach,map, where ,any, every
void main() {
List myList = ['香蕉', '苹果', '西瓜'];
for (var i = 0; i < myList.length; i++) {
print(myList[i]);
}
for (var item in myList) {
print(item);
}
myList.forEach((value) {
print("$value");
});
List myList = [1, 3, 4];
List newList = new List();
for (var i = 0; i < myList.length; i++) {
newList.add(myList[i] * 2);
}
print(newList);
List myList = [1, 3, 4];
var newList = myList.map((value) {
return value * 2;
});
print(newList.toList());
List myList = [1, 3, 4, 5, 7, 8, 9];
var newList = myList.where((value) {
return value > 5;
});
print(newList.toList());
List myList = [1, 3, 4, 5, 7, 8, 9];
var f = myList.any((value) {
//只要集合里面有满足条件的就返回true
return value > 5;
});
print(f);
List myList = [1, 3, 4, 5, 7, 8, 9];
var f = myList.every((value) {
//每一个都满足条件返回true 否则返回false
return value > 5;
});
print(f);
// set
var s = new Set();
s.addAll([1, 222, 333]);
s.forEach((value) => print(value));
//map
Map person = {"name": "张三", "age": 20};
person.forEach((key, value) {
print("$key---$value");
});
}
需求:使用forEach打印下面List里面的数据*/
List list=['苹果','香蕉','西瓜'];
list.forEach((value){
print(value);
});
list.forEach((value)=>print(value));
//注意和方法的区别: 箭头函数内只能写一条语句,并且语句后面没有分号(;)
list.forEach((value)=>{
print(value)
});
需求:修改下面List里面的数据,让数组中大于2的值乘以2*/
List list=[4,1,2,3,4];
var newList=list.map((value){
if(value>2){
return value*2;
}
return value;
});
print(newList.toList());
//另外一种写法
var newList=list.map((value)=>value>2?value*2:value);
print(newList.toList());