国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

沒(méi)有人比我更會(huì)使用集合!對(duì), 是dart中的集合

番茄西紅柿 / 3057人閱讀

摘要:來(lái)看下的基本用法創(chuàng)建一個(gè)空的或者使用的構(gòu)造函數(shù)來(lái)構(gòu)造判斷集合中元素是否存在還有一個(gè)的操作,用來(lái)求兩個(gè)的交集的使用是一種,的數(shù)據(jù)類型也是一種在程序中非常常見(jiàn)的數(shù)據(jù)類型。

簡(jiǎn)介

dart中的集合有三個(gè),分別是list,set和map。dart在dart:core包中提供了對(duì)于這三種集合非常有用的方法,一起來(lái)看看吧。

List的使用

首先是list的創(chuàng)建,可以創(chuàng)建空的list或者帶值的list:

var emptyList =[];var nameList = [jack,mac];

使用List的構(gòu)造函數(shù)來(lái)創(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可以接一個(gè)比較的函數(shù),用來(lái)表示誰(shuí)在前誰(shuí)在后:

var names = [jack, tony, max];fruits.sort((a, b) => a.compareTo(b));

list中還可以使用泛型,表示list中固定的類型:

var names =

Set的使用

Set表示的是不重復(fù)的元素的集合。但是set和list不同的是set是無(wú)序的,所以你不能用index來(lái)定位set中的元素。

來(lái)看下set的基本用法:

//創(chuàng)建一個(gè)空的setvar names =

或者使用Set的構(gòu)造函數(shù)來(lái)構(gòu)造Set:

var names = Set.from([jack, tony, max]);

判斷集合中元素是否存在:

assert(names.contains(jack));assert(names.containsAll([jack, tony]));

set還有一個(gè)intersection的操作,用來(lái)求兩個(gè)set的交集:

var name1 = Set

Map的使用

Map是一種key,value的數(shù)據(jù)類型,也是一種在程序中非常常見(jiàn)的數(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中是否包含某個(gè)key可以使用containsKey():

assert(studentMap.containsKey(name));

常見(jiàn)的集合方法

集合中最常見(jiàn)的方法就是判斷集合是否為空:

assert(studentMap.isEmpty);assert(studentMap.isNotEmpty);

如果想對(duì)集合中的每個(gè)元素都進(jìn)行某個(gè)函數(shù)操作,則可以使用forEach():

var names = [jack, bob, tom];names.forEach((name) => print(the name is $name));var nameMap = {};nameMap.forEach((k, v) {});

如果是可遍歷對(duì)象,則有一個(gè)map方法,map方法會(huì)返回一個(gè)新的對(duì)象:

var names = [jack, bob, mark];var names2 = names.map((name) => name.toUpperCase());

注意,map返回的是一個(gè)Iterable,它是延時(shí)計(jì)算的,只有被使用的時(shí)候才會(huì)進(jìn)行計(jì)算。

如果你想立即計(jì)算的話,則可以使用map().toList() 或者 map().toSet():

var names2 =    names.map((name) => name.toUpperCase()).toList();

可遍歷對(duì)象還可以進(jìn)行條件選擇。比如使用where()來(lái)獲得所有匹配的對(duì)象,使用any()來(lái)判斷集合中是否有匹配的對(duì)象,使用every()來(lái)判斷集合中是否全部匹配。

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));

總結(jié)

集合是在程序編寫(xiě)過(guò)程中非常常用的一種類型,大家一定要熟練掌握。

本文已收錄于 http://www.flydean.com/15-dart-collection/

最通俗的解讀,最深刻的干貨,最簡(jiǎn)潔的教程,眾多你不知道的小技巧等你來(lái)發(fā)現(xiàn)!

歡迎關(guān)注我的公眾號(hào):「程序那些事」,懂技術(shù),更懂你!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/125372.html

相關(guān)文章

  • #yyds干貨盤(pán)點(diǎn)#沒(méi)有人比我更會(huì)使用集合對(duì), dart中的集合

    摘要:簡(jiǎn)介中的集合有三個(gè),分別是,和。比如使用來(lái)獲得所有匹配的對(duì)象,使用來(lái)判斷集合中是否有匹配的對(duì)象,使用來(lái)判斷集合中是否全部匹配。總結(jié)集合是在程序編寫(xiě)過(guò)程中非常常用的一種類型,大家一定要熟練掌握。 簡(jiǎn)介dart中的集合有三個(gè),分別是list,set和map。dart在dart:core包中提供了對(duì)于這三種集合非常有用的方法,一...

    番茄西紅柿 評(píng)論0 收藏2637
  • 6月份最新語(yǔ)言排行:Java,Python我更看好誰(shuí)?

    摘要:作為一種現(xiàn)代語(yǔ)言,它看起來(lái)像一種舊語(yǔ)言,因更傾向于做移動(dòng)和網(wǎng)站開(kāi)噶。所以,個(gè)人覺(jué)得每種語(yǔ)言都有其自己的優(yōu)勢(shì),找到自己的短板并補(bǔ)足自己的短板。總結(jié)于哥更推薦想成為某種語(yǔ)言編程大牛的人,不建議只想搬運(yùn)帶代碼的碼農(nóng)。 文章首發(fā)于終端研發(fā)部,轉(zhuǎn)載,請(qǐng)標(biāo)明原文鏈接 今天的主題是:探討一下6月份語(yǔ)言排行還有我的最新展望! 最近,編程語(yǔ)言排行榜前幾天發(fā)布更新了,在最新的TIOBE編程語(yǔ)言排行榜中,J...

    svtter 評(píng)論0 收藏0
  • Nicholas C. Zakas:我熱愛(ài)互聯(lián)網(wǎng)技術(shù)的種種異端

    摘要:圖靈社區(qū)看來(lái),移動(dòng)互聯(lián)網(wǎng)開(kāi)發(fā)會(huì)成為下一行業(yè)焦點(diǎn),你覺(jué)得呢移動(dòng)互聯(lián)網(wǎng)開(kāi)發(fā)已經(jīng)是焦點(diǎn)了。圖靈社區(qū)現(xiàn)在有很多基于改進(jìn)的語(yǔ)言,比如,等等。熱愛(ài)跨瀏覽器開(kāi)發(fā)帶來(lái)的挑戰(zhàn)熱愛(ài)互聯(lián)網(wǎng)技術(shù)的種種異端,熱愛(ài)業(yè)內(nèi)的同行,熱愛(ài)你的工具。 非商業(yè)轉(zhuǎn)載請(qǐng)注明作譯者、出處,并保留本文的原始鏈接:http://www.ituring.com.cn/article/1791 尼古拉斯·澤卡斯(Nicholas...

    PascalXie 評(píng)論0 收藏0
  • Flutter跨平臺(tái)開(kāi)發(fā)終極之選嗎?Android開(kāi)發(fā)該如何快速上手Flutter?

    摘要:月日,谷歌正式發(fā)布了的。到底能不能成為跨平臺(tái)開(kāi)發(fā)終極之選是基于前端誕生的,但是對(duì)前端開(kāi)發(fā)來(lái)說(shuō),的環(huán)境配置很麻煩,需要原生的平臺(tái)知識(shí),還要擔(dān)心遇上網(wǎng)絡(luò)問(wèn)題。現(xiàn)在已經(jīng)不是曾經(jīng)的小眾框架,這兩年里它已經(jīng)逐步成長(zhǎng)為主流的跨平臺(tái)開(kāi)發(fā)框架之一。 ...

    luckyyulin 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<