摘要:來看下的基本用法創(chuàng)建一個空的或者使用的構(gòu)造函數(shù)來構(gòu)造判斷集合中元素是否存在還有一個的操作,用來求兩個的交集的使用是一種,的數(shù)據(jù)類型也是一種在程序中非常常見的數(shù)據(jù)類型。
dart中的集合有三個,分別是list,set和map。dart在dart:core包中提供了對于這三種集合非常有用的方法,一起來看看吧。
首先是list的創(chuàng)建,可以創(chuàng)建空的list或者帶值的list:
var emptyList =[];var nameList = [jack,mac];
使用List的構(gòu)造函數(shù)來創(chuàng)建:
var nameList = List.filled(2, max);
向list中添加元素或者list:
nameList.add(tony);nameList.addAll([lili, bruce]);
刪除元素:
nameList.removeAt(0);nameList.clear();
dart提供了list的排序方法sort(),sort可以接一個比較的函數(shù),用來表示誰在前誰在后:
var names = [jack, tony, max];fruits.sort((a, b) => a.compareTo(b));
list中還可以使用泛型,表示list中固定的類型:
var names =
Set表示的是不重復(fù)的元素的集合。但是set和list不同的是set是無序的,所以你不能用index來定位set中的元素。
來看下set的基本用法:
//創(chuàng)建一個空的setvar names =
或者使用Set的構(gòu)造函數(shù)來構(gòu)造Set:
var names = Set.from([jack, tony, max]);
判斷集合中元素是否存在:
assert(names.contains(jack));assert(names.containsAll([jack, tony]));
set還有一個intersection的操作,用來求兩個set的交集:
var name1 = Set
Map是一種key,value的數(shù)據(jù)類型,也是一種在程序中非常常見的數(shù)據(jù)類型。
先看下怎么創(chuàng)建Map:
// 創(chuàng)建mapvar studentMap = { name: jack, age: 18, class: class one};var teacherMap = Map();var teacherMap2 = Map
添加和刪除:
var studentMap =Map(); studentMap.putIfAbsent(name, ()=>jack); studentMap.remove(name);
判斷map中是否包含某個key可以使用containsKey():
assert(studentMap.containsKey(name));
集合中最常見的方法就是判斷集合是否為空:
assert(studentMap.isEmpty);assert(studentMap.isNotEmpty);
如果想對集合中的每個元素都進行某個函數(shù)操作,則可以使用forEach():
var names = [jack, bob, tom];names.forEach((name) => print(the name is $name));var nameMap = {};nameMap.forEach((k, v) {});
如果是可遍歷對象,則有一個map方法,map方法會返回一個新的對象:
var names = [jack, bob, mark];var names2 = names.map((name) => name.toUpperCase());
注意,map返回的是一個Iterable,它是延時計算的,只有被使用的時候才會進行計算。
如果你想立即計算的話,則可以使用map().toList() 或者 map().toSet():
var names2 = names.map((name) => name.toUpperCase()).toList();
可遍歷對象還可以進行條件選擇。比如使用where()來獲得所有匹配的對象,使用any()來判斷集合中是否有匹配的對象,使用every()來判斷集合中是否全部匹配。
var names = [jack, bob, max];bool hasJack(String name) => name == jack;var seleteJack = names.where((name) => hasJack(name));assert(names.any(hasJack));assert(!names.every(hasJack));
集合是在程序編寫過程中非常常用的一種類型,大家一定要熟練掌握。
本文已收錄于 http://www.flydean.com/15-dart-collection/
最通俗的解讀,最深刻的干貨,最簡潔的教程,眾多你不知道的小技巧等你來發(fā)現(xiàn)!
歡迎關(guān)注我的公眾號:「程序那些事」,懂技術(shù),更懂你!
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/125372.html
摘要:簡介中的集合有三個,分別是,和。比如使用來獲得所有匹配的對象,使用來判斷集合中是否有匹配的對象,使用來判斷集合中是否全部匹配。總結(jié)集合是在程序編寫過程中非常常用的一種類型,大家一定要熟練掌握。 簡介dart中的集合有三個,分別是list,set和map。dart在dart:core包中提供了對于這三種集合非常有用的方法,一...
摘要:作為一種現(xiàn)代語言,它看起來像一種舊語言,因更傾向于做移動和網(wǎng)站開噶。所以,個人覺得每種語言都有其自己的優(yōu)勢,找到自己的短板并補足自己的短板。總結(jié)于哥更推薦想成為某種語言編程大牛的人,不建議只想搬運帶代碼的碼農(nóng)。 文章首發(fā)于終端研發(fā)部,轉(zhuǎn)載,請標明原文鏈接 今天的主題是:探討一下6月份語言排行還有我的最新展望! 最近,編程語言排行榜前幾天發(fā)布更新了,在最新的TIOBE編程語言排行榜中,J...
摘要:圖靈社區(qū)看來,移動互聯(lián)網(wǎng)開發(fā)會成為下一行業(yè)焦點,你覺得呢移動互聯(lián)網(wǎng)開發(fā)已經(jīng)是焦點了。圖靈社區(qū)現(xiàn)在有很多基于改進的語言,比如,等等。熱愛跨瀏覽器開發(fā)帶來的挑戰(zhàn)熱愛互聯(lián)網(wǎng)技術(shù)的種種異端,熱愛業(yè)內(nèi)的同行,熱愛你的工具。 非商業(yè)轉(zhuǎn)載請注明作譯者、出處,并保留本文的原始鏈接:http://www.ituring.com.cn/article/1791 尼古拉斯·澤卡斯(Nicholas...
摘要:月日,谷歌正式發(fā)布了的。到底能不能成為跨平臺開發(fā)終極之選是基于前端誕生的,但是對前端開發(fā)來說,的環(huán)境配置很麻煩,需要原生的平臺知識,還要擔心遇上網(wǎng)絡(luò)問題。現(xiàn)在已經(jīng)不是曾經(jīng)的小眾框架,這兩年里它已經(jīng)逐步成長為主流的跨平臺開發(fā)框架之一。 ...
閱讀 713·2023-04-25 19:43
閱讀 3910·2021-11-30 14:52
閱讀 3785·2021-11-30 14:52
閱讀 3852·2021-11-29 11:00
閱讀 3783·2021-11-29 11:00
閱讀 3869·2021-11-29 11:00
閱讀 3558·2021-11-29 11:00
閱讀 6105·2021-11-29 11:00