Flutter List数组避免插入重复数据的实现
List
具有一定长度存在索引的对象集合(长度为0不存在索引,长度>0存在索引)
常见列表
1、定长列表
默认值null
例如:List
ListfixedLengthList=newList(2); for(inti=0;i<2;i++){ print("索引为${i}的值${fixedLengthList[i]}"); }
I/flutter(9251):索引为0的值null
I/flutter(9251):索引为1的值null
固定长度不可修改
ListfixedLengthList=newList(2); //改变固定数组长度 fixedLengthList.length=30;
Unsupportedoperation:Cannotchangethelengthofafixed-lengthlist
大概意思:无法更改固定长度数组的长度
ListfixedLengthList=newList(2); ///执行添加数据操作 fixedLengthList.add(0); fixedLengthList.add(1);
ListfixedLengthList=newList(2); fixedLengthList[0]=1; fixedLengthList[1]=2; ///添加数据 fixedLengthList.addAll([3,4]);
Unsupportedoperation:Cannotaddtoafixed-lengthlist
大概以上:不能添加数据到固定长度数组
ListfixedLengthList=newList(2); //执行插入数据 fixedLengthList.insert(0,0);
Unsupportedoperation:Cannotaddtoafixed-lengthlist
大概意思:不能添加数据到固定长度数组
ListfixedLengthList=newList(2); ///执行删除操作 fixedLengthList.removeLast();
ListfixedLengthList=newList(2); ///执行删除操作 fixedLengthList.removeAt(0);
ListfixedLengthList=newList(2); fixedLengthList[0]=1; fixedLengthList[1]=2; ///删除包含索引0和1范围内数据 fixedLengthList.removeRange(0,1);
ListfixedLengthList=newList(2); fixedLengthList[0]=1; fixedLengthList[1]=2; ///删除索引0-1,然后在进行替换删除索引值 fixedLengthList.replaceRange(0,1,[3,4]);
Unsupportedoperation:Cannotremovefromafixed-lengthlist
大概意思:不能删除固定长度数组数据
ListfixedLengthList=newList(2); ///执行清除数据操作 fixedLengthList.clear();
Unsupportedoperation:Cannotclearafixed-lengthlist
大概意思:不能清理固定长度数组数据
可排序、替换、截取
ListfixedLengthList=newList(2); fixedLengthList[0]=1; fixedLengthList[1]=2; ///执行截取指定范围的数组 fixedLengthList.sublist(0); ///排序 fixedLengthList..sort((a,b)=>a.compareTo(b)); /// fixedLengthList.setRange(0,1,[3,4],0); ///索引0-1范围的值不包括1,修改成3 fixedLengthList.fillRange(0,1,3);
2、可增长列表
可改变数组长度、可执行添加、删除、可排序、可替换、可截取
.可增长列表[]保留了内部缓冲区
.缓冲区可增长
.添加数据操作在固定时间内执行(设置固定长度会花费与新长度成比例的时间,修改容量,添加操作将需要立即增加缓冲区容量)
.列表是可以迭代的
.在执行列表操作时,例如在调用forEach或sort期间,通常不允许修改列表的长度(添加或删除元素)
.通过直接迭代列表或通过迭代由列表支持的Iterable更改列表的长度,可以中断迭代
ListfixedLengthList=[]; //改变数组长度 fixedLengthList.length=2; ///执行添加数据操作 fixedLengthList.add(0); fixedLengthList.add(1); fixedLengthList[0]=1; fixedLengthList[1]=2; ///添加数据 fixedLengthList.addAll([3,4]); //执行插入数据 fixedLengthList.insert(0,0); ///执行删除操作 fixedLengthList.removeLast(); ///执行删除操作 fixedLengthList.removeAt(0); ///删除包含索引0和1范围内数据 fixedLengthList.removeRange(0,1); ///删除索引0-1,然后在进行替换删除索引值 fixedLengthList.replaceRange(0,1,[3,4]); fixedLengthList.sublist(0); fixedLengthList..sort((a,b)=>a.compareTo(b)); fixedLengthList.setRange(0,1,[3,4],0); fixedLengthList.fillRange(0,1,3); ///执行清除数据操作 fixedLengthList.clear();
3、contains过滤重复 添加(int、double、bool、String)类型数据
1、int类型数组中插入重复数据
ListlistInts=[]; voidaddIntData(intaddValue){ boolisContainer=listInts.contains(addValue); if(!isContainer){ listInts.add(addValue); } print("数组长度${listInts.length}"); }
I/flutter(28028):数组长度1
I/flutter(28028):数组长度1
I/flutter(28028):数组长度1
2、double类型数组中插入重复数据
ListlistDouble=[]; voidaddDoubleData(doubleaddValue){ boolisContainer=listDouble.contains(addValue); if(!isContainer){ listDouble.add(addValue); } print("数组长度${listDouble.length}"); }
I/flutter(28028):数组长度1
I/flutter(28028):数组长度1
I/flutter(28028):数组长度1
I/flutter(28028):数组长度1
3、String类型数组中插入重复数据
ListlistStrings=[]; voidaddStringData(StringaddValue){ boolisContainer=listStrings.contains(addValue); if(!isContainer){ listStrings.add(addValue); } print("数组长度${listStrings.length}"); }
I/flutter(28028):数组长度1
I/flutter(28028):数组长度1
I/flutter(28028):数组长度1
I/flutter(28028):数组长度1
4、boolean类型数组插入重复数据
ListlistBool=[]; voidaddBoolData(booladdValue){ boolisContainer=listBool.contains(addValue); if(!isContainer){ listBool.add(addValue); } print("数组长度${listBool.length}"); }
I/flutter(28028):数组长度1
I/flutter(28028):数组长度1
I/flutter(28028):数组长度1
I/flutter(28028):数组长度1
I/flutter(28028):数组长度1
4、List对象去重
classA{ Stringa; intb; A(this.a,this.b); }
1、要添加的对象A的每个值和数组里面存在的每个对象的值做比较 (效率低、适合少量数据去重)
ListlistAs=[]; voidaddAData(AaddValue){ intlength=listAs.length; if(length==0){ listAs.add(addValue); }else{ for(inti=0;i2、List配合Set去除重复对象
ListlistAs=[]; SetsetAs=newSet(); voidaddASData(AaddValue){ if(listAs.length==0){ listAs.add(addValue); setAs.addAll(listAs); }else{ listAs.add(addValue); } Listlist=setAs.toList(); print("数组长度${list.length}"); }addASData(newA("a",0));I/flutter(10386):数组长度1
I/flutter(10386):数组长度1
I/flutter(10386):数组长度1
I/flutter(10386):数组长度1
I/flutter(10386):数组长度1
I/flutter(10386):数组长度1参考:
list:https://api.dart.dev/stable/2.9.2/dart-core/List-class.html
Set:https://api.dart.dev/stable/2.9.2/dart-core/Set-class.html
到此这篇关于FlutterList数组避免插入重复数据的实现的文章就介绍到这了,更多相关FlutterList重复插入内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。