dart map 转list_【Dart学习】--Dart之数组(List)的相关方法总结

本文详细介绍了Dart中List的各种操作,包括检查数据类型、查找元素、扩展与解封二维数组、条件查找以及转换等实用方法,帮助开发者更好地理解和使用Dart的List功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个方法相当于查看List中的数据类型是不是都是指定的数据类型,如果发现List中存在不是<>中指定的数据类型就会报错

//这个方法相当于查看List中的数据类型是不是都是指定的数据类型,

//如果发现List中存在不是<>中指定的数据类型就会报错

print(testList6);

List testStringList = testList6.cast();

print("testIntList ===> $testStringList");

查看List中是否存在指定元素

//查看List中是否存在指定元素

print("是否存在哼哼哼${testList6.contains("哼哼哼")}");

查找指定位置的元素

//查找指定位置的元素

//传入的参数必须是合法的,也就是必须在是int类型,然后必须在0到list.length之间

//从源码也可以看出:会首先判断传入的蚕食是否是int类型,然后会判断参数是否小于0,接着执行循环,开始遍历,如果遍历完了还没找到指定的位置

//就说明这个指定的位置有问题。

var position = testList6.elementAt(testList6.length - 1);

print("position ====> $position");

可以理解为将一个一维数组扩展为二维数组

//可以理解为将一个一维数组扩展为二维数组

var testList9 = testList2.expand((item) => [item,item.toString() + "啊"].toList());

print("test expand ===> $testList9");

//同时也可已经一个二维数组解封,解封时需要数组里面的ietm仍然是一个list

var testList10 = [[12,12],[22,44]];

var testList11 = testList10.expand((item) => item.toSet());

print("test expand ===> $testList11");

满足条件的第一个元素

//满足条件的第一个元素

//从源码可以看出,firstWhere方法会首先从列表中查找有没有满足条件的item,如果没有找到,会判断有没有

//传入第二个参数,如果第二个参数不为空,就执行第二个参数的方法,如果第二个参数为空,就直接出错。

var testFirstWhere = testList6.firstWhere((item) => checkExitHa(item),orElse: getHi);

print("满足条件的第一个元素:$testFirstWhere");

有条件地查询所需数据的位置

//有条件地查询所需数据的位置

//第一个参数是返回bool值的函数,第二个参数是起始位置

//下面的例子是找出列表中元素toString之后长度是2的元素出现的位置

testList6.insert(1, 23);

testList6.add(34);

int testIndexWhere1 = testList6.indexWhere((item) => getLength2(item.toString()));

int testIndexWhere2 = testList6.indexWhere((item) => getLength2(item.toString()),3);

print("testIndexWhere1 ${testIndexWhere1}");//输出1

print("testIndexWhere2 ${testIndexWhere2}");//输出10

有条件的查询需要查询的数据最后一次出现的位置

//有条件的查询需要查询的数据最后一次出现的位置

//这个方法具体的执行可以理解为倒序执行,从最后一个元素向前开始查找符合要求的数据

//第二个参数就是指定开始执行的位置

int testLastIndexWhere1 = testList6.lastIndexWhere((item) => getLength2(item.toString()));//输出10

int testLastIndexWhere2 = testList6.lastIndexWhere((item) => getLength2(item.toString()),testList6.length - 2); //输出1

print("testLastIndexWhere ${testLastIndexWhere1}");

print("testLastIndexWhere ${testLastIndexWhere2}");

返回满足条件的元素,第一个参数指定需要满足的条件,第二个参数为可选参数,指定不满足条件的时候需要执行的操作

//返回满足条件的元素,第一个参数指定需要满足的条件,第二个参数为可选参数,指定不满足条件的时候需要执行的操作

print("\n ${testList6}");

var testLastWhere1 = testList6.lastWhere((item) => item.toString().length == 2 ? true : false);//没有找到符合要求的数据就会报出异常,程序会Crash

var testLastWhere2 = testList6.lastWhere((item) => item.toString().length == 1 ? true : false,orElse: getHi);//没有找到符合要求的数据就会去执行getHi方法,返回getHi方法执行结果

print("testLastWhere: ${testLastWhere1}");

print("testLastWhere: ${testLastWhere2}");

检查List中是否只有一个元素,如果只有一个元素会输出这个元素,如果没有元素会抛出没有数据的异常,如果多于一个元素,会抛出too many elemets异常

//检查List中是否只有一个元素,如果只有一个元素会输出这个元素,如果没有元素会抛出没有数据的异常,如果多于一个元素,会抛出too many elemets异常

List testList13 = List();

testList13.add(123);

print("\n testSingle:${testList13.single}");

有条件的查询满足条件的元素是否只出现了一次

//有条件的查询满足条件的元素是否只出现了一次

//第二个参数是可选参数,用于当第一个条件不满足时执行的操作

//具体执行的逻辑如下:

//在List中查找满足条件的元素

//如果没有找到满足条件的元素,查看orElse是否设置,如果设置,就执行orElse设置的函数

//如果找到了满足条件的元素,并且满足条件的元素只有一个,输出这个元素的值

//如果找到了满足条件的元素,但是满足条件元素的数量大于一个,就会抛出too many elements 异常,此时程序会直接crash,不会执行orElse设置的函数

testList6.add(1);

var testSingleWhere = testList6.singleWhere((item) => item.toString().length == 1,orElse: getHi);

print("\ntestSingleWhere ${testSingleWhere}, type is ${testSingleWhere.runtimeType} \n");

取出前面多少个元素放在新的list中

//取出前面多少个元素放在新的list中

var testTake = testList6.take(3);

print("\ntestTake:${testTake},and type is ${testTake.runtimeType}\n");

返回List中满足条件的元素的惰性迭代

//返回List中满足条件的元素的惰性迭代

//从第一个元素开始查找符合条件的元素,一直查找到不符合条件的元素结束

//注意这里是惰性迭代,也就是说如果满足条件的元素并不是按顺序排列的,分布在列表的任何位置,那么

//这个方法查找只会查找处前面符合条件的元素,中间发现有元素不符合条件就会停止查找,即使后面还有符合条件的元素也不会再去查找了

print(testList6);

var testTakeWhile = testList6.takeWhile((item) => item.toString().length == 3);

print("\ntestTakeWhile:${testTakeWhile},and type is ${testTakeWhile.runtimeType}\n");

创建一个可包含此列表的新的列表

//创建一个可包含此列表的新的列表

//growable是一个可选参数,默认为true,表示创建一个可变长度的列表

//如果传入false,则是一个固定长度的列表

var testToList = testList6.toList(growable: true);

var testToList1 = testList6.toList(growable: false);

//testToList1.add("123");//异常:testToList是一个固定长度的列表,无法进行添加数据的操作

//testToList1.removeAt(0);//异常:固定列表无法进行删除数据的操作

print("\ntestToList: ${testToList},and type id ${testToList.runtimeType}\n");

print("\ntestToList1: ${testToList1},and type id ${testToList1.runtimeType}\n");

查找列表中满足条件的数据,条件由传入的函数参数决定

//查找列表中满足条件的数据,条件由传入的函数参数决定

var testWhere = testList6.where((item) => item.toString().length == 3);

print("\ntestWhere:${testWhere} and type is ${testWhere.runtimeType}\n");

取出List列表中指定类型的元素,并放入新的列表中

//取出List列表中指定类型的元素,并放入新的列表中

//如下面是将List中数据类型为String的元素全部取出放入到新的List中

print(testList6);

var testWhereType= testList6.whereType();

print("\ntestWhereType:${testWhereType},and type is ${testWhereType.runtimeType}\n");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值