时间:2021-05-20
List
具有一定长度存在索引的对象集合(长度为0不存在索引,长度>0存在索引)
常见列表
1、定长列表
默认值null
例如:List<int> fixedLengthList = new List(2)、List<int> fixedLengthList = new List(8)
List<int> fixedLengthList = new List(2);for(int i=0;i<2;i++){ print("索引为${i}的值${fixedLengthList[i]}");}I/flutter ( 9251): 索引为0的值null
I/flutter ( 9251): 索引为1的值null
固定长度不可修改
List<int> fixedLengthList = new List(2);//改变固定数组长度fixedLengthList.length=30;Unsupported operation: Cannot change the length of a fixed-length list
大概意思:无法更改固定长度数组的长度
List<int> fixedLengthList = new List(2);///执行添加数据操作fixedLengthList.add(0);fixedLengthList.add(1);List<int> fixedLengthList = new List(2); fixedLengthList[0]=1; fixedLengthList[1]=2;///添加数据fixedLengthList.addAll([3,4]);Unsupported operation: Cannot add to a fixed-length list
大概以上: 不能添加数据到固定长度数组
Unsupported operation: Cannot add to a fixed-length list
大概意思: 不能添加数据到固定长度数组
Unsupported operation: Cannot remove from a fixed-length list
大概意思:不能删除固定长度数组数据
Unsupported operation: Cannot clear a fixed-length list
大概意思:不能清理固定长度数组数据
可排序、替换、截取
List<int> fixedLengthList = new List(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,修改成3fixedLengthList.fillRange(0, 1,3);2、可增长列表
可改变数组长度、 可执行添加、删除、可排序、可替换、可截取
.可增长列表[]保留了内部缓冲区
.缓冲区可增长
.添加数据操作在固定时间内执行 (设置固定长度会花费与新长度成比例的时间,修改容量,添加操作将需要立即增加缓冲区容量)
.列表是可以迭代的
.在执行列表操作时,例如在调用forEach或sort期间,通常不允许修改列表的长度(添加或删除元素)
.通过直接迭代列表或通过迭代由列表支持的Iterable更改列表的长度,可以中断迭代
List<int> fixedLengthList = []; //改变数组长度 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类型数组中插入重复数据
List<int> listInts = []; void addIntData(int addValue){ bool isContainer=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类型数组中插入重复数据
List<double> listDouble = []; void addDoubleData(double addValue){ bool isContainer=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类型数组中插入重复数据
List<String> listStrings = []; void addStringData(String addValue){ bool isContainer=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类型数组插入重复数据
List<bool> listBool = []; void addBoolData(bool addValue){ bool isContainer=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对象去重
class A{ String a; int b; A(this.a, this.b);}1、要添加的对象A的每个值和数组里面存在的每个对象的值做比较(效率低、适合少量数据去重)
List<A> listAs = []; void addAData(A addValue){ int length=listAs.length; if(length==0){ listAs.add(addValue); }else { for (int i = 0; i < length; i++) { A a = listAs[i]; if (a.a != addValue.a && a.b != addValue.b) { listAs.add(addValue); } } } print("数组长度${listAs.length}"); }2、List配合Set去除重复对象
List<A> listAs = [];Set<A> setAs=new Set<A>();void addASData(A addValue){ if(listAs.length==0) { listAs.add(addValue); setAs.addAll(listAs); }else{ listAs.add(addValue); } List<A> list=setAs.toList(); print("数组长度${list.length}");}addASData(new A("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
到此这篇关于Flutter List数组避免插入重复数据的实现的文章就介绍到这了,更多相关Flutter List 重复插入内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了JS实现的数组去除重复数据算法。分享给大家供大家参考,具体如下:在JS中经常会遇到去除数组中重复数据的需求,在此介绍四种算法以实现JS数组去重的功
SQLServer中防止并发插入重复数据,大致有以下几种方法:1.使用PrimaryKey,UniqueKey等在数据库层面让重复数据无法插入。2.插入时使用条
总的思路就是先找出表中重复数据中的一条数据,插入临时表中,删除所有的重复数据,然后再将临时表中的数据插入表中。所以重点是如何找出重复数据中的一条数据,有三种
今天朋友问了我这个问题:JS求多个数组的重复数据注:1.更准确的说是只要多个数组中有两个以上的重复数据,那么这个数据就是我需要的2.单个数组内的数据不存在重复值
java查找list中重复数据实例详解需求:查找一个List集合中所有重复的数据,重复的数据可能不止一堆,比如:aa,bb,aa,bb,cc,dd,aa这样的数