android 过滤数组中的重复元素,Flutter List数组避免插入重复数据的实现
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<2;i++){
print("索引為${i}的值${fixedLengthList[i]}");
}
I/flutter ( 9251): 索引為0的值null
I/flutter ( 9251): 索引為1的值null
固定長度不可修改
List fixedLengthList = new List(2);
//改變固定數組長度
fixedLengthList.length=30;
Unsupported operation: Cannot change the length of a fixed-length list
大概意思:無法更改固定長度數組的長度
List fixedLengthList = new List(2);
///執行添加數據操作
fixedLengthList.add(0);
fixedLengthList.add(1);
List fixedLengthList = new List(2);
fixedLengthList[0]=1;
fixedLengthList[1]=2;
///添加數據
fixedLengthList.addAll([3,4]);
Unsupported operation: Cannot add to a fixed-length list
大概以上: 不能添加數據到固定長度數組
List fixedLengthList = new List(2);
//執行插入數據
fixedLengthList.insert(0, 0);
Unsupported operation: Cannot add to a fixed-length list
大概意思: 不能添加數據到固定長度數組
List fixedLengthList = new List(2);
///執行刪除操作
fixedLengthList.removeLast();
List fixedLengthList = new List(2);
///執行刪除操作
fixedLengthList.removeAt(0);
List fixedLengthList = new List(2);
fixedLengthList[0]=1;
fixedLengthList[1]=2;
///刪除包含索引0和1范圍內數據
fixedLengthList.removeRange(0, 1);
List 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 fixedLengthList = new List(2);
///執行清除數據操作
fixedLengthList.clear();
Unsupported operation: Cannot clear a fixed-length list
大概意思:不能清理固定長度數組數據
可排序、替換、截取
List 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 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
參考:
到此這篇關于Flutter List數組避免插入重復數據的實現的文章就介紹到這了,更多相關Flutter List 重復插入內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!
總結
以上是生活随笔為你收集整理的android 过滤数组中的重复元素,Flutter List数组避免插入重复数据的实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: bsgs(Baby Steps Gian
- 下一篇: session 的 源码