本节主要讲Dart中的循环流程和常用的集合类的用法。
一、++和--
++ 表示自增1,a++相当于a=a+1;
-- 表示自减1, a--相当于a=a-1;
和其他语言一样,在赋值运算里面 如果++/-- 写在前面 这时候先运算再赋值,如果++/--写在后面先赋值后运行运算
二、流程控制
1、循环
- for基本语法和其他语言基本一样,语法不多说了,直接上代码
for (int i = 1; i<=100; i++) {
print(i);
}
- while循环
//两种形式
while(表达式/循环条件){
}
do{
语句/循环体
}while(表达式/循环条件);
注意: 1、最后的分号不要忘记
2、循环条件中使用的变量需要经过初始化
3、循环体中,应有结束循环的条件,否则会造成死循环。
注意:
1、最后的分号不要忘记
2、循环条件中使用的变量需要经过初始化,
3、循环体中,应有结束循环的条件,否则会造成死循环。
//死循环
int i=1;
while(i<=10){
print(i);
}
//正确的例子
int i=1;
var sum=0;
while(i<=100){
sum+=i;
i++;
}
print(sum);
//第二种形式do...while例子
int i=1;
var sum=0;
do{
sum+=i;
i++;
}while(i<=100);
print(sum);
while 和 do while的区别:在第一次循环条件不成立的情况下,while不会执行循环体的代码,do...while会执行,也就是do...while的循环体至少要执行一次。
2、break和continue
break语句功能:
- 在switch语句中使流程跳出switch结构。
- 在循环语句中使流程跳出当前循环,遇到break 循环终止,后面代码也不会执行
强调:
- 如果在循环中已经执行了break语句,就不会执行循环体中位于break后的语句。
- 在多层循环中,一个break语句只能向外跳出一层
break可以用在switch case中 也可以用在 for 循环和 while循环中
continue语句的功能:
- 只能在循环语句中使用,使本次循环结束,即跳过循环体重下面尚未执行的语句,接着进行下次的是否执行循环的判断。
continue可以用在for循环以及 while循环中,但是不建议用在while循环中,不小心容易死循环
for(var i=1;i<=10;i++){
if(i==4){
break; /*跳出循环体*/
}
print(i);
}
for(var i=1;i<=10;i++){
if(i==4){
continue; /*跳过当前循环体 然后循环还会继续执行*/
}
print(i);
}
三、集合
1、List里面常用的属性和方法:
常用属性:
- length 长度
- reversed 翻转
- isEmpty 是否为空
- isNotEmpty 是否不为空
常用方法:
- add 增加
- addAll 拼接数组
- indexOf 查找 传入具体值
- remove 删除 传入具体值
- removeAt 删除 传入索引值
- fillRange 修改
- insert(index,value); 指定位置插入
- insertAll(index,list) 指定位置插入List
- toList() 其他类型转换成List
- join() List转换成字符串
- split() 字符串转化成List
List myList=['香蕉','苹果','西瓜'];
myList.add('桃子'); //增加数据 增加一个
myList.addAll(['桃子','葡萄']); //拼接数组
print(myList);
print(myList.indexOf('苹x果')); //indexOf查找数据 查找不到返回-1 查找到返回索引值
myList.remove('西瓜');
myList.removeAt(1);
print(myList);
2、Set
用Set最主要的功能就是去除数组重复内容,Set是没有顺序且不能重复的集合,所以不能通过索引去获取值
//List转成Set去重和Set转成List
List myList=['香蕉','苹果','西瓜','香蕉','苹果','香蕉','苹果'];
var s=new Set();
s.addAll(myList);
print(s);
print(s.toList());
3、Map
映射(Maps)是无序的键值对
常用属性:
- keys 获取所有的key值
- values 获取所有的value值
- isEmpty 是否为空
- isNotEmpty 是否不为空
常用方法:
- remove(key) 删除指定key的数据
- addAll({...}) 合并映射 给映射内增加属性
- containsValue 查看映射内的值 返回true/false
Map person={
"name":"张三",
"age":20,
"sex":"男"
};
person.addAll({
"work":['敲代码','送外卖'],
"height":160
});
print(person);
person.remove("sex");
print(person);
4、forEach
List myList=['香蕉','苹果','西瓜'];
myList.forEach((v) {
print(v);
});
5、for...in
List myList=['香蕉','苹果','西瓜'];
for(var item in myList){
print(item);
}
5、where
List myList=[1,3,4,5,7,8,9];
var f=myList.any((value){ //只要集合里面有满足条件的就返回true
return value>5;
});
print(f);
6、any
List myList=[1,3,4,5,7,8,9];
var f=myList.any((value){ //只要集合里面有满足条件的就返回true
return value>5;
});
print(f);
7、every
List myList=[1,3,4,5,7,8,9];
var f=myList.every((value){ //每一个都满足条件返回true 否则返回false
return value>5;
});
print(f);
8、map
map返回一个数组
List myList=['香蕉','苹果','西瓜'];
var newList = myList.map((v) {
return v * 2;
});
print(newList);//(香蕉香蕉, 苹果苹果, 西瓜西瓜)