欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

Dart (II)- 循环表达式、列表、集合和映射的常用属性和方法

最编程 2024-03-16 08:52:16
...

Dart(一)—变量、常量、基本类型、运算符、条件判断以及类型转换

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) 指定位置插入List
  • toList() 其他类型转换成List
  • join() List转换成字符串
  • split() 字符串转化成List
  • forEach
  • 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/false
  • forEach
  • 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");
});

推荐阅读