日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

懂集合吗?对,是dart中的集合

發布時間:2024/2/28 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 懂集合吗?对,是dart中的集合 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 簡介
  • List的使用
  • Set的使用
  • Map的使用
  • 常見的集合方法
  • 總結

簡介

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

List的使用

首先是list的創建,可以創建空的list或者帶值的list:

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

使用List的構造函數來創建:

var nameList = List.filled(2, 'max');

向list中添加元素或者list:

nameList.add('tony'); nameList.addAll(['lili', 'bruce']);

刪除元素:

nameList.removeAt(0); nameList.clear();

dart提供了list的排序方法sort(),sort可以接一個比較的函數,用來表示誰在前誰在后:

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

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

var names = <String>[];names.add('jack');

Set的使用

Set表示的是不重復的元素的集合。但是set和list不同的是set是無序的,所以你不能用index來定位set中的元素。

來看下set的基本用法:

//創建一個空的set var names = <String>{};// 添加新的元素 names.addAll(['jack', 'tony', 'max']);//刪除元素names.remove('jack');

或者使用Set的構造函數來構造Set:

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

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

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

set還有一個intersection的操作,用來求兩個set的交集:

var name1 = Set<String>(); name1.addAll(['jack', 'tony', 'max']);var name2 = Set.from(['tony', 'bily']); var intersection = name1.intersection(name2);

Map的使用

Map是一種key,value的數據類型,也是一種在程序中非常常見的數據類型。

先看下怎么創建Map:

// 創建map var studentMap = {'name': 'jack','age': '18','class': 'class one' };var teacherMap = Map();var teacherMap2 = Map<String, String>();

添加和刪除:

var studentMap =Map();studentMap.putIfAbsent('name', ()=>'jack');studentMap.remove('name');

判斷map中是否包含某個key可以使用containsKey():

assert(studentMap.containsKey('name'));

常見的集合方法

集合中最常見的方法就是判斷集合是否為空:

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

如果想對集合中的每個元素都進行某個函數操作,則可以使用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/

最通俗的解讀,最深刻的干貨,最簡潔的教程,眾多你不知道的小技巧等你來發現!

歡迎關注我的公眾號:「程序那些事」,懂技術,更懂你!

總結

以上是生活随笔為你收集整理的懂集合吗?对,是dart中的集合的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。