List(數組)里面常用的屬性和方法



常用屬性:
length 長度
reversed 翻轉
isEmpty 是否為空
isNotEmpty 是否不為空
常用方法:
add 增加
addAll 拼接數組 增加多個數據 list.addAll(['11','22'])
indexOf 查找 傳入具體值
remove 刪除 傳入具體值
removeAt 刪除 傳入索引值
fillRange 修改
insert(index,value); 指定位置插入
insertAll(index,list) 指定位置插入List
toList() 其他類型轉換成List
join() List轉換成字符串
split() 字符串轉化成List
forEach 無返回值
map 全部返回 符合條件的為true 否則false
where 返回 符合條件的 相當於filter
    any 只要有一個符合條件的 返回true 否則false
every 全部符合條件 返回true 否則false

Set()
a = new Set()
var a = new Set();
a.add('123');
a.add('233');
print(a.toList()); //轉換成數組


Map() 也就是json;
常用屬性:
keys 獲取所有的key值
values 獲取所有的value值
isEmpty 是否為空
isNotEmpty 是否不為空
常用方法:
remove(key) 刪除指定key的數據
addAll({...}) 合並映射 給映射內增加屬性
containsValue 查找映射內的值 返回true/false
forEach
map
where
any
every
 
        
常用方法

add() 添加一個元素到List末尾

    List<String> list9 = List(); list9.add('aaa'); list9.add('bbb'); print(list9);//[aaa, bbb] 

addAll() 兩個List合並

    List<String> list10 = List(); list10.add('aaa'); list10.add('bbb'); List<String> list11 = List(); list11.add('ccc'); list11.add('ddd'); list11.addAll(list10); print(list11);//[ccc, ddd, aaa, bbb] 

insert(index,element) 在指定index處插入值

List<int> list21 = List(); list21.add(0); list21.add(1); list21.add(2); list21.add(3); print(list21);//[0, 1, 2, 3] list21.insert(1, 5); //指定索引位置 插入值,其余順延 print(list21);// [0, 5, 1, 2, 3] 

insertAll(index,list) 在指定index處插入list 其余順延

    List<int> list25 = List(); list25.add(0); list25.add(1); list25.add(2); list25.add(3); print(list25);//[0, 1, 2, 3] list25.insertAll(1, [5,6,7]); print(list25);//[0, 5, 6, 7, 1, 2, 3] 

followedBy(list) 將自身和參數內list合成一個List

    List<int> list45 = [3, 4, 1, 2, 5]; Iterable<int> list46 = list45.followedBy([6,7]);//拼接兩個list // print(list46);//(3, 4, 1, 2, 5, 6, 7) // print(list46.toList());//[3, 4, 1, 2, 5, 6, 7] // print(list46.toList(growable: false));//[3, 4, 1, 2, 5, 6, 7] growable=false 表示生成的List的長度固定 不可再增加新元素 

remove(obj) 刪除具體的元素
removeAt(index) 刪除索引位置元素

    List<String> list15 = List(); list15.add('aaa'); list15.add('bbb'); list15.add('ccc'); print(list15);//[aaa, bbb, ccc] list15.remove('bbb');// 直接根據元素的值刪除 print(list15);// [aaa, ccc] list15.removeAt(1);//根據索引位置刪除 print(list15);//[aaa] 

removeLast()刪除末尾元素
removeRange(start,end) 范圍刪除
removeWhere() 根據條件刪除

    List<String> list16 = List(); list16.add('aaa'); list16.add('bbb'); list16.add('ccc'); list16.add('ddd'); list16.add('eee'); list16.add('fff'); print(list16);//[aaa, bbb, ccc, ddd, eee, fff] list16.removeLast();//刪除末尾元素 print(list16);//[aaa, bbb, ccc, ddd, eee] list16.removeRange(0, 2);//刪除索引從0-2的元素 含頭不含尾 print(list16);//[ccc, ddd, eee] list16.removeWhere((element){ return element=='ddd';});//根據條件 篩選,這里表示刪除元素值為ddd的元素 print(list16);//[ccc, eee] list16.removeWhere((element)=> element=='ccc');//條件只有一個表達式時,可以用箭頭函數簡化寫法 print(list16);//[eee] 

clear() 清空數組

    List<String> list17 = List(); list17.add('aaa'); list17.add('bbb'); list17.add('ccc'); list17.add('ddd'); print(list17);//[aaa, bbb, ccc, ddd] list17.clear();//清空數組 print(list17);//[] 

修改指定index位置的值

    var list12 = [2,'3',true]; list12[1] = 2; print(list12);// [2, 2, true] 

setRange(startIndex,endIndex,list) 范圍修改List的值

 List<String> list18 = List(); list18.add('aaa'); list18.add('bbb'); list18.add('ccc'); list18.add('ddd'); // print(list18);// [aaa, bbb, ccc, ddd] List<String> list19 = List(); list19.add("111"); list19.add("222"); list19.add("333"); list19.add("444"); list19.add("555"); list19.add("666"); list18.setRange(0,3, list19);//范圍修改,從list19取出0 1 2位置的值,修改list18對應0 1 2位置的值,0-3含頭不含尾,start和end相同,則不變。start和end任何一個超出list18 list19的角標 則報錯。 // print(list18);//[111, 222, ccc, ddd] 

replaceRange(start,end,list)范圍替換 含頭不含尾

List<int> list27 = List(); list27.add(0); list27.add(1); list27.add(2); list27.add(3); print(list27);//[0, 1, 2, 3] list27.replaceRange(1, 3, [5,6,7,8]);//范圍替換 含頭不含尾 print(list27);//[0, 5, 6, 7, 8, 3] 

fillRange(start,end,value) 從start-end 每個元素用value替換

    List<int> list30 = List(); list30.add(0); list30.add(1); list30.add(2); list30.add(3); list30.add(4); // print(list30);//[0, 1, 2, 3, 4] list30.fillRange(1, 4,6); //用相同的值替換指定索引范圍內的值 // print(list30);//[0, 6, 6, 6, 4] 

retainWhere(()=>(bool)) 根據條件篩選元素

    List<int> list31 = List(); list31.add(0); list31.add(1); list31.add(2); list31.add(3); list31.add(4); // print(list31);//[0, 1, 2, 3, 4] list31.retainWhere((element)=>(element>2)); //根據條件保留住元素 // print(list31);//[3, 4] 

setAll(index,list) 從index開始,使用list內的元素逐個替換本list中的元素

    List<int> list32 = List(); list32.add(0); list32.add(1); list32.add(2); list32.add(3); list32.add(4); // print(list32);//[0, 1, 2, 3, 4] list32.setAll(2, [7,6]);//從指定index位置開始使用arr的值進行替換替換,index+arr.length必須<=list32.length 否則報錯 // print(list32);//[0, 1, 7, 6, 4] 

查看index位置的值

    List<String> list14 = List(); list14.add('aaa'); list14.add('bbb'); list14.add('ccc'); print(list14[0]);//aaa 查看指定索引位置的值 print(list14[2]);//ccc print(list14.first);//aaa 便捷操作 獲取List第一個元素 print(list14.last);//ccc 便捷操作 獲取最后一個元素 

indexOf(element,[start]) 查找指定元素在list中的索引

    List<int> list24 = List(); list24.add(0); list24.add(1); list24.add(2); list24.add(3); int index1 = list24.indexOf(2); //從索引0處開始查找指定元素,返回指定元素的索引 int index2 = list24.indexOf(2,3);//從索引3處開始查找指定元素,如果存在返回元素索引,否則返回-1 print(index1);//2 print(index2);// -1 

lastIndexOf(obj,index) 從后往前查找,返回第一個的index

    List<String> list34 = List(); list34.add("aaa"); list34.add("bbb"); list34.add("ccc"); list34.add("ddd"); list34.add("eee"); // print(list34);// [aaa, bbb, ccc, ddd, eee] int index = list34.lastIndexOf("ccc",1);//從指定索引位置(包含)開始往前找指定的元素所在的索引,找不到返回-1 // print(index);//-1 int index3 = list34.lastIndexOf("ccc",2);//從指定索引位置(包含)開始往前找指定的元素所在的索引,找不到返回-1 // print(index3);//2 

elementAt(index) 獲取指定索引位置的元素

    List<String> list40 = List(); list40.add("aaa"); list40.add("bbb"); list40.add("ccc"); list40.add("ddd"); list40.add("eee"); // print(list40);// [aaa, bbb, ccc, ddd, eee] String result3 = list40.elementAt(4);//獲取指定索引位置的元素 // print(result3);//eee 

any((element)=>(bool)) 判斷List中是否有任意一個元素符合給定的參數

    List<String> list36 = List(); list36.add("aaa"); list36.add("bbb"); list36.add("ccc"); list36.add("ddd"); list36.add("eee"); // print(list36);// [aaa, bbb, ccc, ddd, eee] bool result = list36.any((element)=>(element=="d"));//判斷list元素中是否有任何一個元素滿足給定的條件,如果滿足返回true 否則false // print(result);//false 

every((element)=>(bool)) 判斷List中是否每個元素都符合參數函數

    List<int> list41 = [1, 2, 3, 4, 5]; bool result4 = list41.every((element)=>(element%2==0));//是否每個元素都符合條件 都符合返回true 否則返回false bool result5 = list41.every((element)=>(element>0)); // print(result4);//false // print(result5);//true 

contains(obj) List中是否存在給定的obj

    List<String> list39 = List(); list39.add("aaa"); list39.add("bbb"); list39.add("ccc"); list39.add("ddd"); list39.add("eee"); // print(list39);// [aaa, bbb, ccc, ddd, eee] bool result2 = list39.contains("eee");//是否包含某元素 // print(result2);//true 

firstWhere((element)=>(bool)) 返回第一個滿足條件的元素(不是元素的index)

    List<int> list43 = [1, 2, 3, 4, 5]; int result7 = list43.firstWhere((element)=>(element>2));//返回滿足條件的第一個元素 // int result8 = list43.firstWhere((element)=>(element>44));//返回滿足條件的第一個元素,不滿足 報錯 int result9 = list43.firstWhere((element)=>(element>44),orElse: ()=>(10));//返回滿足條件的第一個元素,不滿足 返回orElse方法的返回值 // print(result7);//3 // print(result8);//報錯 // print(result9);//10 

indexWhere((e)=>(bool)) 返回第一個滿足條件的元素的index
lastIndexWhere((e)=>(bool)) 從后向前找 返回第一個滿足條件的元素的index

    List<int> list48 = [3, 4, 1, 2, 5]; int result12 = list48.indexWhere((e)=>(e>3));//返回第一個滿足條件的元素的index // print(result12);//1 int result14 = list48.indexWhere((e)=>(e>3),2);//返回第一個滿足條件的元素的index,從index為2開始尋找 // print(result14);//4 int result13= list48.indexWhere((e)=>(e>13));//返回第一個滿足條件的元素的index 不存在則返回-1 // print(result13);//-1 int result15= list48.indexWhere((e)=>(e<2),3);//返回第一個滿足條件的元素的index ,從index為3開始尋找 不存在則返回-1 // print(result15);//-1 int result16 = list48.lastIndexWhere((e)=>(e>3));//從后向前找,返回第一個滿足條件的元素的index // print(result16);//4 int result17 = list48.lastIndexWhere((e)=>(e>3),1);//從后向前找,返回第一個滿足條件的元素的index,從index為1開始尋找 // print(result17);//1 int result18= list48.lastIndexWhere((e)=>(e>13));//從后向前找,返回第一個滿足條件的元素的index 不存在則返回-1 // print(result18);//-1 int result19= list48.lastIndexWhere((e)=>(e<2),3);//從后向前找,返回第一個滿足條件的元素的index ,從index為3開始尋找 不存在則返回-1 // print(result19);//2 

lastWhere((e)=>(bool)) 從后往前找,返回第一個滿足條件的元素的值(不是index)

    List<int> list49 = [3, 4, 1, 2, 5]; int result20 = list49.lastWhere((e)=>e>2);//從后往前找,返回第一個滿足條件的元素的值(不是index) //print(result20);//5 //int result22 = list49.lastWhere((e)=>e>22);//從后往前找,返回第一個滿足條件的元素的值(不是index),沒有找到則報錯 int result21 = list49.lastWhere((e)=>e>11,orElse: ()=>(44));//從后往前找,返回第一個滿足條件的元素的值(不是index),如果沒有,則返回orElse的方法返回值 //print(result21);//44 

forEach() List遍歷每個元素

    List<int> list47 = [3, 4, 1, 2, 5]; list47.forEach((element){//遍歷每個元素 此時不可add或remove 否則報錯 但可以修改元素值, element += 1; // print(element);//依次輸出:4 5 2 1 6 list47[3]=0;//直接修改list對應index的值 list47[0]=0; }); // print(list47);// [0, 4, 1, 0, 5] //for List遍歷每個元素 for(var x in list47){ print(x);//0 4 1 0 5 } 

map() 遍歷現有List的每個元素,並做處理,返回一個新的Iterable

    List<int> list51 = [3, 4, 1, 2, 5]; Iterable<String> result25 = list51.map((e)=>(e>2?"a":"b"));//用指定方法對每個元素做操作,將結果組成一個新的Iterable // print(result25);//(a, a, b, b, a) Iterable<bool> result26 = list51.map((e)=>(e>2)); // print(result26);//(true, true, false, false, true) 

fold(initValue,(preValue,element)=>()); 根據現有的List和給定的initValue,指定一個參數函數規則,對List每個元素做操作,並將結果返回。

    List<int> list44 = [1, 2, 3, 4, 5]; int result10 = list44.fold(2, (a,element)=>(a*element));//2*(1*2*3*4*5) 2為初始值,后面的方法定義初始值和List之間的操作方式,並將結果返回。 // print(result10);//240 int result11 = list44.fold(2, (a,element)=>(a+element));//2+(1+2+3+4+5) = 17 // print(result11);//17 

reduce((a,b)=>(某種操作)) 用指定的方法對元素做連續操作,將結果返回

    List<int> list52 = [3, 4, 1, 2, 5]; int result27 = list52.reduce((a,b)=>(a+b));//3+4+1+2+5 用指定的方法對元素做連續操作,將結果返回 // print(result27);//15 int result28 = list52.reduce((a,b)=>(a*b));//3*4*1*2*5 用指定的方法對元素做連續操作,將結果返回 // print(result28);//120 

skip(count)越過count個元素后,開始返回list的Iterable
skipWhile((e)=>(bool)) 根據參數函數,找到第一個不符合條件的元素,然后將其及其后的元素返回

    List<int> list54 = [3, 4, 1, 2, 5]; Iterable<int> result30 = list54.skip(2);//越過count個元素后,開始返回list的Iterable // print(result30);//(1, 2, 5) Iterable<int> result31 = list54.skip(3); // print(result31);//(2, 5) Iterable<int> result32 = list54.skipWhile((e)=>(e>2));//從第一個元素開始,逐個判斷是否符合參數函數,直至第一個不符合的元素,將其及其后面的元素返回 // print(result32.toList());//[1, 2, 5] Iterable<int> result35 = list54.skipWhile((e)=>(e<4));//從第一個元素開始,逐個判斷是否符合參數函數,直至第一個不符合的元素,將其及其后面的元素返回 // print(result35.toList());//[4, 1, 2, 5] Iterable<int> result36 = list54.skipWhile((e)=>(e>0));//從第一個元素開始,逐個判斷是否符合參數函數,直至第一個不符合的元素,將其及其后面的元素返回,如果都符合,返回一個空數組 // print(result36.toList());//[] Iterable<int> result37 = list54.skipWhile((e)=>(e<0));//從第一個元素開始,逐個判斷是否符合參數函數,直至第一個不符合的元素,將其及其后面的元素返回,如果都不符合,全部返回。都不符合其實就是第一個就不符合,因此將第一個及后面的返回。 // print(result37.toList());//[3, 4, 1, 2, 5] 

take(count) 從0開始取count個元素,並返回結果
takeWhile((e)=>(bool)) 從0開始取,直至第一個不符合函數的元素,將其前面的元素都返回。

    List<int> list55 = [3, 4, 1, 2, 5]; Iterable<int> result33 = list55.take(2);//從0開始取2個元素 並返回 // print(result33);//(3, 4, 1) Iterable<int> result34 = list55.takeWhile((e)=>(e>2));//從第一個元素開始,逐個判斷是否符合參數函數,直至第一個不符合的元素,將其前面元素都返回 // print(result34);//(3, 4) 

where((e)=>(bool) 根據指定參數函數篩選每個元素,符合條件的元素組成一個新的Iterable

    List<int> list57 = [3, 4, 1, 2, 5,2,3,6]; Iterable<int> result39 = list56.where((e)=>(e>2));//根據參數函數篩選 //print(result39);//(3, 4, 5, 3, 6) 

singleWhere((e)=>(bool>) 找到那唯一滿足條件的元素

    List<int> list53 = [3, 4, 1, 2, 5]; int result29 = list53.singleWhere((e)=>(e>4),orElse: ()=>(10));//找到那唯一滿足條件的元素,如果沒有滿足條件的元素或有多個元素滿足條件,就返回orElse方法的返回值,如果沒有傳入orElse則報錯。 // print(result29);//5 

whereType() 從無指定泛型的List中,篩選出指定類型的數據。

    List list58 = [3, 4, "a",true,"b",5,false]; Iterable<int> result40 = list58.whereType();//從混合類型的List中,篩選出指定類型的數據 print(result40);//(3, 4, 5) Iterable<String> result41 = list58.whereType(); print(result41);//(a, b) Iterable<bool> result42 = list58.whereType(); print(result42);//(true, false) 

cast() 將List的泛型提升到其父祖類

    List<String> list37 = List(); list37.add("aaa"); list37.add("bbb"); list37.add("ccc"); list37.add("ddd"); list37.add("eee"); // print(list37);// [aaa, bbb, ccc, ddd, eee] List<Object> list38 = list37.cast();//類型提升,將當前List<String> 提升為泛型的父祖類 List<Object> list38.add("222");//必須添加同類型的元素 如果list38.add(2) 則報錯 // print(list38);//[aaa, bbb, ccc, ddd, eee, 222] 

expand() 根據現有的List,指定一個規則,生成一個新的List

    List<int> list42 = [1, 2, 3, 4, 5]; Iterable<int> result6 = list42.expand((element)=>([element+1,element+2]));//通過對元素操作,返回一組指定規則的新的集合 // print(result6);//(2, 3, 3, 4, 4, 5, 5, 6, 6, 7) // print(result6.toList());//[2, 3, 3, 4, 4, 5, 5, 6, 6, 7] 

toSet() 將List轉為Set 去除后面重復的元素

    List<int> list56 = [3, 4, 1, 2, 5,2,3,6]; Set<int> result38 = list56.toSet();//將list轉為set,將后面重復的都去掉 //print(result38);//{3, 4, 1, 2, 5, 6} 

asMap() 將list轉為map

    List<String> list33 = List(); list33.add("aaa"); list33.add("bbb"); list33.add("ccc"); list33.add("ddd"); list33.add("eee"); // print(list33);// [aaa, bbb, ccc, ddd, eee] Map<int,String> map = list33.asMap();//list轉為map key為index value為list的值 // print(map);//{0: aaa, 1: bbb, 2: ccc, 3: ddd, 4: eee} 

shuffle() List內元素,重新隨機排列

    List<String> list35 = List(); list35.add("aaa"); list35.add("bbb"); list35.add("ccc"); list35.add("ddd"); list35.add("eee"); // print(list35);// [aaa, bbb, ccc, ddd, eee] list35.shuffle();//元素重新隨機排列 // print(list35);//[ddd, eee, aaa, ccc, bbb] 

sort() List自身排序

List<int> list20 = List(); list20.add(2); list20.add(3); list20.add(1); list20.add(0); // print(list20);//[2, 3, 1, 0] list20.sort((a,b)=>(a>b?1:-1));//自身排序 修改本身的list // print(list20);//[0, 1, 2, 3] 

sublist(start,[end]) 從指定index 截取list

    List<int> list21 = List(); list21.add(0); list21.add(1); list21.add(2); list21.add(3); print(list21);//[0, 1, 2, 3] list21.insert(1, 5); //指定索引位置 插入值,其余順延 print(list21);// [0, 5, 1, 2, 3] List<int> list22 = list21.sublist(1);//從指定索引截取List List<int> list23 = list21.sublist(1,3);//從指定索引截取List 含頭不含尾 print(list22);//[5, 1, 2, 3] print(list23);//[5, 1] 

getRange(start,end) 從list中截取start-end范圍內的數據

    List<int> list28 = List(); list28.add(0); list28.add(1); list28.add(2); list28.add(3); list28.add(4); list28.add(5); list28.add(6); list28.add(7); // print(list28);//[0, 1, 2, 3, 4, 5, 6, 7] Iterable<int> list29 = list28.getRange(2, 5);//含頭不含尾,從2開始到5(不含)結束的一個Iterable // print(list29);//(2, 3, 4) 

join("-") 用指定的字符將List中每個元素都連接起來,返回一個字符串

    List<int> list50 = [3, 4, 1, 2, 5]; String result24 = list50.join("-");//用指定的字符將每個元素都連接起來,返回一個字符串 // print(result24);//3-4-1-2-5


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM