Flutter List数组避免插入重复数据 您所在的位置:网站首页 过滤数组中重复的元素 Flutter List数组避免插入重复数据

Flutter List数组避免插入重复数据

2024-02-07 13:07| 来源: 网络整理| 查看: 265

志当存高远。——诸葛亮  List

具有一定长度存在索引的对象集合(长度为0不存在索引,长度>0存在索引)

常见列表 1、定长列表

默认值null

例如:List fixedLengthList = new List(2)、List fixedLengthList = new List(8)

List fixedLengthList = new List(2); for(int i=0;i a.compareTo(b)); /// fixedLengthList.setRange(0, 1, [3,4],0); ///索引0-1范围的值不包括1,修改成3 fixedLengthList.fillRange(0, 1,3); 2、可增长列表 

可改变数组长度、 可执行添加、删除、可排序、可替换、可截取

.可增长列表[]保留了内部缓冲区

.缓冲区可增长

.添加数据操作在固定时间内执行 (设置固定长度会花费与新长度成比例的时间,修改容量,添加操作将需要立即增加缓冲区容量)

.列表是可以迭代的

.在执行列表操作时,例如在调用forEach或sort期间,通常不允许修改列表的长度(添加或删除元素)

.通过直接迭代列表或通过迭代由列表支持的Iterable更改列表的长度,可以中断迭代

List 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 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 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 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 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 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 listAs = []; Set setAs=new Set(); void addASData(A addValue){ if(listAs.length==0) { listAs.add(addValue); setAs.addAll(listAs); }else{ listAs.add(addValue); } List 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 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有