List、Set、Map(Dart语言)
List
使用List关键字和[ ]定义一个简单的List:
List list = ['A','B','C'];
List中常用的属性:
- length:返回当前List的长度。
- isEmpty:判断是否为空,返回bool类型的值。
- isNotEmpty:判断是否为不空,返回bool类型的值。
- reversed:倒序输出List中的值。输出结果并不是一个List,需要使用toList()方法将其在转换成List。
List list = ['A','B','C']; print(list.reversed); //输出结果:(A,B,C) var newList = list.reversed.toList(); print(newList); //输出结果:[A,B,C]
-
first:返回第一个值。
-
last:返回最后一个值。
List中常用的方法:
- add(VALUE):向List中添加单个数据。
- addAll([ARRAY]):以数组的形式向List中添加多个数据。
- indexOf(ELEMENT):查找ELEMENT是否在List中。如果存在,返回其索引值;如果是不存在,返回 -1。
- remove(ELEMENT):删除ELEMENT。
- removeAt(INDEX):删除索引值为INDEX的值。
- fillRange(START,END,[<E> VALUE]):将[START,END)范围内的值改为[<E>VALUE]的值。
- insert(INDEX,VALUE):在INDEX处插入VALUE。
- insert(INDEX,LIST):在INDEX处插入LIST。
- join(SYMBOL):以SYMBOL将LIST隔开,并以String类型返回。
- STRING.split(SYMBOL):将字符串以SYMBOL进行切割,并以List类型返回。
Set
Set最主要的功能就是去除数组中的重复内容。Set没有顺序,所以不能通过索引来获取值。
创建一个简单的Set:
var s = new Set();
s.add('芒果');
s.add('芒果');
print(s); //输出结果:{芒果}
可以根据Set不可重复的特性对List进行去重操作:
List list = ['A','B','C','D','A','B','C','D'];//定义一个重复的List
var t_set = new Set();
t_set.addAll(list);
print(t_set); //输出结果:{A,B,C,D}
print(t_set.toList()); //输出结果:[A,B,C,D]
Map
定义一个简单的map类型:
//定义方法 1
var person = {"name":"A","年龄":"20"};
//定义方法 2
var map = new Map();
map["name"] = "B";
Map中常用的属性
- MAP.keys.toList():将MAP中所有的Key以List的方式返回。
- MAP.values.toList():将MAP中所有的Value以List的方式返回。
遍历方法
for循环
for...in...:
for(var item in List){
print(item);
}
forEach:
List list = ['A','B','C'];
list.forEach((value){
print("$value")
});
其中,forEach()方法中其实传入的是一个省略方法名的方法体。例如下面的run函数:
run(){
}
run函数省略方法名则变为:
(){
}
传入forEach则得到:
forEach((){
})
还有一种书写格式需要注意,如果代码块内只有一行带代码,可以使用 =>来代替return
//两种书写方式效果相同
List.forEach((value)=>print(Value));
List.forEach((value){
print(value);
});
where:是一种类似与数据库中的判断语句,选择输出符合条件的值:
List list = [1,3,5,6,7,9,8,4];
var newList = list.where((value){//输出list中大于5的值。
return value > 5;
});
any:类似与where的判断语句。只要有一个满足某一条件,就返回true,否则返回false。
List list = [1,2,5,8,7,6,5];
var isRight = list.any((value){//判断list中是否存在大于10的数字
return value>10; //输出结果:false
});