Dart(二)—循环表达式、List、Set及Map的常用属性和方法
Dart的循环表达式
for循环
for (int i = 1; i<=100; i++) {
print(i);
}
也可以写成:
for (var i = 1; i<=10; i++) {
print(i);
}
对于List
的遍历我们可以这样做:
var list = <String>["张三","李四","王五"];
for (var element in list) {
print(element);
}
对于Map
的迭代我们也可以使用for
循环语句:
var person={
"name":"小明",
"age":28,
"work":["程序员","Android开发"]
};
person.forEach((key, value) {
print(value);
});
while语句
while
有两种语句格式:
while(表达式/循环条件){
}
do{
语句/循环体
}while(表达式/循环条件);
注意:
- 1、最后的分号不要忘记
- 2、循环条件中使用的变量需要经过初始化
- 3、循环体中,应有结束循环的条件,否则会造成死循环。
看下面代码:
int i = 1;
while (i <= 10) {
print(i);
i++;
}
do...while()
最大的区别就是不管条件成立与否都会至少执行一次:
var i = 2;
do{
print('执行代码');
}while(i < 2);
break和continue语句
break语句功能:
- 在
switch
语句中使流程跳出switch
结构。 - 在循环语句中使流程跳出当前循环,遇到
break
循环终止,后面代码也不会执行
需要强调的是:
- 如果在循环中已经执行了
break
语句,就不会执行循环体中位于break后的语句。 - 在多层循环中,一个
break
语句只能向外跳出一层
break
可以用在switch case
中 也可以用在for
循环和while
循环中。
continue语句的功能:
只能在循环语句中使用,使本次循环结束,即跳过循环体中下面尚未执行的语句,接着进行下次的是否执行循环的判断。
continue
可以用在for
循环以及while
循环中,但是不建议用在while
循环中,不小心容易死循环。
break使用:
//如果 i等于4的话跳出循环
for(var i=1;i<=10;i++){
if(i==4){
break; /*跳出循环体*/
}
print(i);
}
//break语句只能向外跳出一层
for(var i = 0;i < 5;i++){
for(var j = 0;j< 3;j++){
if(j == 1){
break;
}
}
}
while循环跳出:
//while循环 break跳出循环
var i = 1;
while(i< =10){
if(i == 4){
break;
}
print(i);
i++;
}
continue使用:
//如果i等于4的话跳过
for(var i=1;i<=5;i++){
if(i == 2){
continue; //跳过当前循环体 然后循环还会继续执行
}
print(i);
}
List常用属性和方法
常用属性:
length
长度reversed
翻转isEmpty
是否为空isNotEmpty
是否不为空
常用方法:
add
增加addAll
拼接数组indexOf
查找 传入具体值remove
删除 传入具体值removeAt
删除 传入索引值fillRange
修改insert(index,value)
指定位置插入insertAll(index,list)
指定位置插入ListtoList()
其他类型转换成Listjoin()
List转换成字符串split()
字符串转化成ListforEach
map
where
any
一些常用属性和方法使用举例:
var list=['张三','李四','王五',"小明"];
print(list.length);
print(list.isEmpty);
print(list.isNotEmpty);
print(list.reversed); //对列表倒序排序
print(list.indexOf('李四')); //indexOf查找数据 查找不到返回-1 查找到返回索引值
list.remove('王五');
list.removeAt(2);
list.fillRange(1, 2,'a'); //修改 1是开始的位置 2二是结束的位置
print(list);
list.insert(1,'a');
print(list);
list.insertAll(1, ['a','b']); //插入多个
Set
Set的最主要的功能就是去除数组重复内容,它是没有顺序且不能重复的集合,所以不能通过索引去获取值。
var s = new Set();
s.add('A');
s.add('B');
s.add('B');
print(s); //{A, B}
当add
相同内容时候无法添加进去的。
Set可以通过add
方法添加一个List
,并清除值相同的元素:
var list = ['香蕉','苹果','西瓜','香蕉','苹果','香蕉','苹果'];
var s = new Set();
s.addAll(list);
print(s);
print(s.toList());
Map常用属性和方法
Map是无序的键值对,它的常用属性主要有以下:
常用属性:
keys
获取所有的key值values
获取所有的value值isEmpty
是否为空isNotEmpty
是否不为空
常用方法:
remove(key)
删除指定key的数据addAll({...})
合并映射 给映射内增加属性containsValue
查看映射内的值 返回true/falseforEach
map
where
any
every
map转换:
List list = [1, 3, 4];
//map转换,根据返回值返回新的元素列表
var newList = list.map((value) {
return value * 2;
});
print(newList.toList());
where:获取符合条件的元素:
List list = [1,3,4,5,7,8,9];
var newList = list.where((value){
return value > 5;
});
print(newList.toList());
any:是否有符合条件的元素
List list = [1, 3, 4, 5, 7, 8, 9];
//只要集合里面有满足条件的就返回true
var isContain = list.any((value) {
return value > 5;
});
print(isContain);
every:需要每一个都满足条件
List myList=[1,3,4,5,7,8,9];
//每一个都满足条件返回true 否则返回false
var flag = myList.every((value){
return value > 5;
});
print(flag);
Set使用forEach遍历:
var s=new Set();
s.addAll([11,22,33]);
s.forEach((value) => print(value));
Map使用forEach遍历:
Map person={
"name":"张三",
"age":28
};
person.forEach((key,value){
print("$key -> $value");
});
作者:柒叁
链接:https://juejin.cn/post/7116159285054144526/
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。