龙空技术网

Dart 知识点 - 集合 List, Set, Map

吉米庞 165

前言:

此时朋友们对“js中定义list”都比较关怀,小伙伴们都需要剖析一些“js中定义list”的相关内容。那么小编也在网络上收集了一些有关“js中定义list””的相关文章,希望我们能喜欢,咱们一起来了解一下吧!

#头条创作挑战赛#

本文同步本人掘金平台的文章:

推荐使用线上编辑器 dartpad.cn 或者 dartpad.dev 进行学习,测试~

Dart 中的集合类,允许以各种方式将元素分组,并定义各种使这些元素更容易操作的方法。本文,我们来认识相关的集合类。

集合的作用

集合有以下的作用:

对数据进行组织简单快捷搜索大数量的数目有的集合提供了排序的元素,可以在序列中快速插入或者删除元素有的集合提供了映射接口,可以快速查找元素Dart 中的集合

Dart 中重要有以下的集合:

List:存储一组不唯一且按插入顺序排序的对象,可以操作索引(可以理解为 JavaScript 中的数组) -Set:存储一组唯一且无序的对象(可以理解为字典)Map:key - value 键值对的形式存储数据,key 是唯一的(可以理解为 JavaScript 中操作的键值对)List 集合

List 是一组有序元素的集合,数据元素可以不唯一。

List 中的常用属性有:

属性

描述

length

List 的长度

reversed

反转 List

isEmpty

判断 List 是否为空

isNotEmpty

判断 List 是否不为空

void main() {  handleList();}void handleList() {  // 元素可重复,比如:叫 'Jimmy' 的人不止一个  List list = ['Jimmy', 'Kimmy', 'Timmy', 'Jimmy'];    print(list); // [Jimmy, Kimmy, Timmy, Jimmy]    print(list.length); // 4    // 反转后并没有影响原 list  List newList = list.reversed.toList();   print(newList); // [Jimmy, Timmy, Kimmy, Jimmy]  print(list[2]); // Timmy  print(newList[2]); // Kimmy    print(list.isEmpty); // false    print(list.isNotEmpty); // true  }

List 中的常用方法有:

方法

描述

add

增加一个元素

addAll

拼接数组

indexOf

返回元素的索引,没有则返回 -1

remove

根据传入具体的值删除元素

removeAt

根据传入具体的索引删除元素

insert(index, value)

根据索引位置插入元素

insertAll(index, list)

根据索引位置插入 List

toList()

其他类型转换成 List

join()

将 List 元素拼接起来

split()

将字符串按照指定的方式拆分并转换成 List

map

遍历 List 元素,如果符合条件返回 true,否者返回 false

where

查找 list 中满足条件的元素

相关示范代码:

void main() {  handleList();}void handleList() {  List list = ['Jimmy', 'Kimmy'];    print(list); // [Jimmy, Kimmy]    list.add('Timmy');    print(list); // [Jimmy, Kimmy, Timmy]    list.addAll(['Jimmy', 'Kimmy']);    print(list); // [Jimmy, Kimmy, Timmy, Jimmy, Kimmy]    List reversedList = list.reversed.toList();    print(reversedList); // [Kimmy, Jimmy, Timmy, Kimmy, Jimmy]    // 返回的是查找到的第一元素的位置  print(list.indexOf('Jimmy')); // 0    // 移除的是查找到的第一个元素  print(list.remove('Jimmy')); // true  print(list); // [Kimmy, Timmy, Jimmy, Kimmy]    print(list.removeAt(0)); // Kimmy  print(list); // [Timmy, Jimmy, Kimmy]    list.insert(0, 'Ivy');  print(list); // [Ivy, Timmy, Jimmy, Kimmy]    list.insertAll(0, ['Jimmy', 'Kimmy']);  print(list); // [Jimmy, Kimmy, Ivy, Timmy, Jimmy, Kimmy]    String joinList = list.join('-');  print(joinList); // Jimmy-Kimmy-Ivy-Timmy-Jimmy-Kimmy  print(list); // [Jimmy, Kimmy, Ivy, Timmy, Jimmy, Kimmy]    List newList = joinList.split('-');  print(newList); // [Jimmy, Kimmy, Ivy, Timmy, Jimmy, Kimmy]  print(list.map((item) => item == 'Jimmy')); // (true, false, false, false, true, false)    print(list.where((item) => item == 'Jimmy')); // (Jimmy, Jimmy)}

List 遍历:

List 集合遍历的方法有三种:

for 循环遍历,通过下标获取元素for...in 循环遍历,直接获取每个元素forEach 循环遍历,直接获取每个元素

void main() {  List list = ['Jimmy', 'Kimmy'];    // for 循环  for(var i = 0; i < list.length; i++) {    // 通过下标去访问元素    print(list[i]);    // Jimmy    // Kimmy  }    // for...in 循环  for(var item in list) {    print(item);    // Jimmy    // Kimmy  }    // forEach 循环  list.forEach((item) {    print(item);    // Jimmy    // Kimmy  });}
Set 集合

Set 表示对象的集合,每个对象只能出现一次。

Set 中的常用属性有:

属性

描述

first

返回 Set 的第一个元素

last

返回 Set 的最后一个元素

length

返回 Set 的元素个数

isEmpty

判断 Set 是否为空

isNotEmpty

判断 Set 是否不为空

iterator

返回迭代器对象,用于遍历集合

void main() {  Set set = Set.from(['Jimmy', 'Ivy']);  print(set.first); // Jimmy  print(set.last); // Ivy  print(set.length); // 2  print(set.isEmpty); // false  print(set.isNotEmpty); // true  print(set.iterator); // Instance of '_CompactIterator<dynamic>'}

Set 中的常用方法有:

方法

描述

add

添加一个元素

addAll

添加一些元素

toString

转换字符串形式

join

以指定的字符串连接,以字符串形式输出

contains

集合中是否包含指定元素

containsAll

集合中是否包含指定一些元素

elementAt(index)

根据索引返回集合的元素

remove

删除指定的元素

removeAll

删除指定的一些元素

clear

删除所有元素

void main() {  Set set = Set.from([]);  set.add('Jimmy');  print(set.toString()); // {Jimmy}  set.addAll(['Ivy', 'Kimmy']);  print(set.join('-')); // Jimmy-Ivy-Kimmy  print(set.contains('Timmy')); // false  print(set.containsAll(['Jimmy', 'Kimmy'])); // true  print(set.elementAt(1)); // Ivy  set.remove('Kimmy');  print(set); // {Jimmy, Ivy}  set.removeAll(['Jimmy', 'Anonymous']);  print(set); // {Ivy}  set.clear();  print(set); // {}}

Set 遍历:

Set 集合遍历的方法有两种:

for...in 循环调用 toList 方法返回一个 List 对象,再用 List 对象的遍历方法操作...

void main() {  Set set = Set.from(['Jimmy', 'Ivy']);  for(var item in set) {    print(item);    // Jimmy    // Ivy  }    set.toList().forEach((item){    print(item);    // Jimmy    // Ivy  });}
Map 集合

Map 对象就是一个键值对(key - value)。

Map 中的常用属性有:

属性

描述

hasCode

返回集合的哈希码

isEmpty

是否为空

isNotEmpty

是否不为空

keys

返回集合所有的键

values

返回集合所有的值

length

返回集合键值对数

runtimeType

返回对象运行时类型

void main() {  Map map = {    "name": "Jimmy",    "height": 100  };  print(map.hashCode); // 101270140 (每次运行时值都有所改变)  print(map.isEmpty); // false  print(map.isNotEmpty); // true  print(map.keys.toList()); // [name, height]  print(map.values); // (Jimmy, 100)  print(map.length); // 2  print(map.runtimeType); // JsLinkedHashMap<dynamic, dynamic>}

Map 中的常用方法有:

方法

描述

toString

字符串表示

addAll

添加键值对到集合

containsKey

集合是否包含指定的键

containsValue

集合是否包含指定的值

remove

删除指定键值对

clear

删除所有键值对

void main() {  Map map = {    "name": "Jimmy",    "height": 100  };  print(map.toString()); // {name: Jimmy, height: 100}  map.addAll({    "age": 10  });  print(map); // {name: Jimmy, height: 100, age: 10}  print(map.containsKey('name')); // true  print(map.containsValue('1')); // false  map.remove('height');   print(map); // {name: Jimmy, age: 10}  map.clear();  print(map); // {}}

Map 遍历:

Map 集合遍历的方法有两种:

forEach 循环for...in 循环

void main() {  Map map = {    "name": "Jimmy",    "height": 100  };  map.forEach((key, value) {    print('${key} => ${value}');    // name => Jimmy    // height => 100  });  for(var key in map.keys) {    print(map[key]);    // Jimmy    // 100  }}

如果读者觉得文章还可以,不防一键三连:关注➕点赞➕收藏

标签: #js中定义list