中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Flutter中的List數組如何避免插入重復數據

發布時間:2020-11-04 18:14:11 來源:億速云 閱讀:491 作者:Leah 欄目:開發技術

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

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

富平县| 河西区| 繁峙县| 丹巴县| 开远市| 洪湖市| 乐清市| 岳池县| 东乌珠穆沁旗| 历史| 巫溪县| 南昌市| 城口县| 拜城县| 大同县| 遂川县| 开平市| 应城市| 富源县| 乐都县| 金秀| 交口县| 阿城市| 仙游县| 云阳县| 洪湖市| 霍邱县| 沈阳市| 泰州市| 门头沟区| 合山市| 浙江省| 长白| 青州市| 新绛县| 江川县| 涿鹿县| 东源县| 盐津县| 囊谦县| 苏尼特左旗|