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

志当存高远。——诸葛亮

 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

 

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

 

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

固定长度不可修改 

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
大概以上: 不能添加数据到固定长度数组 

List<int> fixedLengthList = new List(2);
//执行插入数据
fixedLengthList.insert(0, 0);

Unsupported operation: Cannot add to a fixed-length list
大概意思: 不能添加数据到固定长度数组  

   List<int> fixedLengthList = new List(2);
///执行删除操作
fixedLengthList.removeLast();

List<int> fixedLengthList = new List(2);
///执行删除操作
fixedLengthList.removeAt(0);

 List<int> fixedLengthList = new List(2);
fixedLengthList[0]=1;
fixedLengthList[1]=2;
///删除包含索引0和1范围内数据
fixedLengthList.removeRange(0, 1);

List<int> fixedLengthList = new List(2);
fixedLengthList[0]=1;
fixedLengthList[1]=2;
///删除索引0-1,然后在进行替换删除索引值
fixedLengthList.replaceRange(0, 1, [3,4]);

Unsupported operation: Cannot remove from a fixed-length list
大概意思:不能删除固定长度数组数据

List<int> fixedLengthList = new List(2);
///执行清除数据操作
fixedLengthList.clear();

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,修改成3
fixedLengthList.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 

原创:https://www.panoramacn.com
源码网提供WordPress源码,帝国CMS源码discuz源码,微信小程序,小说源码,杰奇源码,thinkphp源码,ecshop模板源码,微擎模板源码,dede源码,织梦源码等。

专业搭建小说网站,小说程序,杰奇系列,微信小说系列,app系列小说

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

免责声明,若由于商用引起版权纠纷,一切责任均由使用者承担。

您必须遵守我们的协议,如果您下载了该资源行为将被视为对《免责声明》全部内容的认可-> 联系客服 投诉资源
www.panoramacn.com资源全部来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。 敬请谅解! 侵权删帖/违法举报/投稿等事物联系邮箱:2640602276@qq.com
未经允许不得转载:书荒源码源码网每日更新网站源码模板! » Flutter List数组避免插入重复数据
关注我们小说电影免费看
关注我们,获取更多的全网素材资源,有趣有料!
120000+人已关注
分享到:
赞(0) 打赏

评论抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

您的打赏就是我分享的动力!

支付宝扫一扫打赏

微信扫一扫打赏