
✨✨✨✨✨ 魏什么_多喝水 Flutter 之路
声明
var list1 = List();//不限定长度,不限定类型,可添加任意类型
List<dynamic> list2 = List(); //不加泛型的,默认都是dynamic 支持任何类型
List list3 = List(2);///限定长度为2
List<String> list4 = List(); //限定数据为String,加入其它数据会报错
var list5 = [1,2,3];//初始赋值,限定了长度、类型
print(list5[2]);
list5[1] = 100; //可以直接去修改值
print(list5); //[1,100,3
常用属性
List<String> cusList = List();
cusList.add('111');
cusList.add('222');
cusList.add('333');
print(cusList.length); //3
print(cusList.isEmpty);//是否为空
print(cusList.isNotEmpty);
print(cusList.reversed); //(333, 222, 111) //倒叙输出
print(cusList.first); //111
print(cusList.last);//333
常用方法
cusList.add('444');
print(cusList); // [111, 222, 333, 444] 添加
List<String> list7 = List();
list7.add('555');
list7.add('666');
cusList.addAll(list7); //allAll 合并两个list
print(cusList);//[111, 222, 333, 444, 555, 666]
插入
list7.insert(0, '000'); //insert 插入 在第0个位置插入 000
print(list7); //[000, 555, 666]
list7.insertAll(1, ['1','2','3','4']); //insertAll在指定位置插入list ,其余顺延
print(list7); // [000, 1, 2, 3, 4, 555, 666]
合并
Iterable<String> list8 = list7.followedBy(['8','9']); //followedBy 拼接两个数组,返回一个元组
print(list8); // (000, 1, 2, 3, 4, 555, 666, 8, 9)
print(list8.toList()); //转为list [000, 1, 2, 3, 4, 555, 666, 8, 9]
print(list8.toList(growable: false)); //[000, 1, 2, 3, 4, 555, 666, 8, 9]
// growable=false 表示生成的List的长度固定 不可再增加新元素
删除
///删除
print('list8-->$list8');
List<String> list9 = List();
list9.add('1');
list9.add('2');
list9.add('3');
list9.add('4');
list9.add('5');
list9.add('6');
list9.remove('1'); //删除元素 //[2, 3, 4]
print(list9);
list9.removeAt(0); //根据索引删除 [3, 4, 5, 6]
print(list9);
list9.removeLast(); //删除最后一个元素 [3, 4, 5]
print(list9);
list9.removeRange(0,2); //删除一定的范围(从0开始到2-1 , 顾头不顾尾) [5]
print(list9);
list9.removeWhere((element){ //根据条件删除, 删除元素值为5的元素
return element=="5";
});
list9.clear(); //清空数组
print(list9); // []
修改替换
List<String> list10 = List();
list10.add('0');
list10.add('1');
list10.add('2');
list10.add('3');
list10.add('4');
list10.add('5');
list10.add('6');
list10[1] = '123'; //直接修改指定位置的值
print(list10); //[0, 123, 2, 3, 4, 5, 6]
list10.setRange(0, 3, ['456','789','000']); //修改指定范围的值,顾头不顾尾. [n,m,value] n到m-1
print(list10); //[456, 789, 000, 3, 4, 5, 6]
list10.replaceRange(0, 3, ['0','1','2']); //替换指定范围的值,和setRange一样
print(list10); //[0, 1, 2, 3, 4, 5, 6]
list10.fillRange(0, 3,'100'); // 0 - 3 每个元素用value替换
print(list10); //[100, 100, 100, 3, 4, 5, 6]
list10.setAll(1, ['111','222','333']); //从索引看是,使用list内的元素逐个替换原list中的元素
print(list10); //[100, 111, 222, 333, 4, 5, 6]
查询
List<int> list11 = List();
list11.add(1);
list11.add(2);
list11.add(3);
list11.add(4);
list11.add(5);
list11.add(6);
list11.add(7);
list11.add(8);
list11.add(9);
list11.add(10);
List<String> list12 = List();
list12.add('a');
list12.add('b');
list12.add('c');
list12.add('d');
list12.add('e');
list12.add('f');
list12.add('g');
list12.add('h');
list12.add('i');
list12.add('j');
print(list11[5]);//查看指定索引位置的值 //6
print(list12.elementAt(5)); //获取指定索引位置的元素 // f
print(list11.first);//查看第一个元素
print(list11.last); //查看最后一个元素
int index1 = list12.indexOf('f'); //默认0开始查找,返回指定元素的索引
print(index1); // 5
int index2 = list12.indexOf('b',4); //从索引4开始查找指定元素,如果存在返回元素索引,否则返回-1
print(index2); //-1
int index3 = list12.lastIndexOf('i',1); //从后往前查找. 从指定索引位置,开始往前找,找不到返回 -1 .默认是list.count
print(index3); // 8
list11.retainWhere((element) => (element > 4)); //根据条件保留元素
print(list11); //[5, 6, 7, 8, 9, 10]
bool result = list12.any((element)=>(element=='f'));//判断list中元素是否有任何一个元素满足条件.如果有返回true,否则返回false
print(result); //true
bool reslut1 = list11.every((element) => (element>0));//判断list中每个元素是否都符合条件
print(reslut1); //true
bool reslut2 = list11.every((element) => (element%2==0));
print(reslut2); //false
list12.contains('f');//是否存在某个元素
int result3 = list11.firstWhere((element) => (element>4)) ;//返回第一个满足条件的元素
print(result3); // c
//返回第一个满足条件的元素,不满足返回orElse的值
int result4 = list11.firstWhere((element) => (element>115),orElse: ()=>(100));
print(result4);
遍历
//forEach: 遍历每个元素,此时不可add或remove,否则报错,但可以修改元素值
list11.forEach((element){
list11[4] = 1026;
});
print(list11); //[5, 6, 7, 8, 1026, 10]
for (var value in list11){
print(value);
}
//map: 遍历list中的每一个元素,并处理返回一个新的Iterable可迭代类型
Iterable<String> reslut5 = list11.map((element)=>(element>100?'a':'b'));
print(reslut5); //(b, b, b, b, a, b)
//fold:根据现有的List和给定的initValue,指定一个参数函数规则,对List每个元素做操作,并将结果返回。
int result6 = list11.fold(2, (a,element)=>(a*element)); //
print(result6);
Set
在 Dart 中,set 是一个无序的,元素唯一的集合。 因为一个 set 是无序的,所以无法通过下标(位置)获取 set 中的元素。
var ingredients = Set();
ingredients.addAll(['gold', 'titanium', 'xenon']);
assert(ingredients.length == 3);
// 添加一个重复的元素是无效的。
ingredients.add('gold');
assert(ingredients.length == 3);
// 从 set 中移除一个元素。
ingredients.remove('gold');
assert(ingredients.length == 2);
交集
交集 是另外两个 set 中的公共元素组成的 set 。
var ingredients = Set();
ingredients.addAll(['gold', 'titanium', 'xenon']);
// 创建两个 set 的交集。
var nobleGases = Set.from(['xenon', 'argon']);
var intersection = ingredients.intersection(nobleGases);
assert(intersection.length == 1);
assert(intersection.contains('xenon'));
网友评论