这个方法相当于查看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");