了解Dart中的地图数据类型

119 阅读5分钟

了解Dart中的地图数据类型

像大多数其他编程语言一样,Dart在创建变量时也遵循类似的规则--允许每个变量有一个相关的数据类型。

Dart和它的数据类型/数据结构介绍

本节将首先介绍什么是Dart和它的数据类型。然后,我们将探讨地图作为一种数据类型。Dart是一种由谷歌开发的开源编程语言,在网络&和移动应用中很受欢迎,通常是客户端优化。

(面向客户的)Dart是一种面向对象的、类型安全的、与平台无关的语言,允许开发者创建快节奏的应用程序和系统。Dart中使用的编译器技术让开发者在本地平台(移动和桌面)和网络平台(网络应用)上运行代码。

Dart中的一些内置和常用的数据类型有。

  • 数字
  • 字符串
  • 布尔
  • 列表
  • 地图

让我们开始使用地图

地图的语法和声明

Dart地图是一个以键值形式/对的数据存储对象。存储在地图中的值/项目可以在你的代码中被多次引用,并且只能通过其相关的键来检索或到达。

Dart中的地图类似于Python中的字典,接受任何类型的数据作为键和值对。(动态集合)。一个Map用大括号声明,每个键值对用逗号隔开。

地图中包含的项目可以被迭代,键值的迭代顺序定义了哪种类型的地图被声明或被创建。Dart地图可以用地图字样或地图构造器来声明。

常见的地图类型包括。

哈希图

HashMap项目可以按任何顺序访问。此外,值的迭代顺序与它们相关的键相同,所以并行迭代键和值会得到匹配的键和值对。

链接哈希图

访问LinkedHashMap项目是以一种可预测的顺序发生的。这是因为键值对以它们被插入的顺序出现。

SplayTreeMap

SplayTreeMap以每个元素的访问频率来分组地图中的元素。

地图的特点

一个地图有Length 属性,定义了任何地图中键/值对的数量。这个属性的声明方式如下。

 int get length 
  • 有isEmpty属性与它的操作绑定,以定义键/值对的存在。此属性声明如下:。
 bool get isEmpty. 
  • 此属性具有Keys属性,用于列举Dart地图中的所有键项。此属性声明如下。
int get Key.
  • 这有Value属性来列举Dart地图中所有有价值的项目。这个属性的声明如下。
int get Value. 

操纵地图元素

现在我们更好地理解了什么是地图,让我们来看看在不同的情况下如何操作Dart地图。

确定地图的大小

长度属性在返回构成地图的元素的键值对总数时使用。

操作时使用的语法是。

map.length

在一个例子中,我们有一个包含学生详细信息的地图,寻找地图的总大小如下所示。


void main(){
    var student = {'Name':'Adam Doe', 'Email':'doe@gmail.com', 'RegNumber':'B11/6732/2020'};

    print(student.length); //map length
}

预期的输出将是。

3

Length.

上面的地图包含三个键值对元素,分别是学生的nameemailRegNumber ,因此输出为3。

确定键-值的存在

为了确认一个键和其对应的值是否存在于定义的地图中,可以使用containsKey() 方法和 `containsValue()方法。

例子。


void main(){
var student = {'Name':'Adam Doe', 'Email':'doe@gmail.com', 'RegNumber':'B11/6732/2020'};
/* To find key existence */
print(student.containsKey('Name'));
print(student.containsKey('Password'));
/* To find value existence */
print(student.containsValue('RashFord'));
print(student.containsKey('doe@gmail.com'));
}

Key.

第一个语句的输出将是true ,因为学生的映射包含一个Name 的键,而第二个打印语句将返回false ,因为Password 的键并不存在。

第三条打印语句返回false ,因为没有记录RashFord 作为一个值。最后一条打印语句返回true ,因为doe@gmail.com 是该邮件的键值。

在地图中插入配对元素

在地图中插入新的键值对可以通过两种方式实现。

  1. 向Map Literal添加值。

下面的代码实现了插入。


void main(){
    var student = {'Name':'Adam Doe', 'Email':'doe@gmail.com', 'RegNumber':'B11/6732/2020'};
    student['course'] = 'Bcom';
    print(student);
}

添加一个额外的学生课程的对元素,将返回一个新的地图,看起来像。


{'Name':'Adam Doe', 'Email':'doe@gmail.com', 'RegNumber':'B11/6732/2020', 'course':'Bcom'}

Insert.

通过地图构造器添加值

这种向地图插入新的对元素的方法是通过一个地图构造函数实现的,其实现方式如下。


void main(){
    var student = new Map();
    student['Id'] = '414JK33';
    student['Year'] = 'Third year'
    print(student)

}

输出。


{'Id':'414JK33', 'Year':'Third Year'}

Constructor.

合并地图

合并不同定义的地图将把一个地图中的所有键值对添加到另一个地图的键值对中。这个实现使用addAll() 函数。

例子。


void main(){

    Map cakes = {'A':'Blackforest', 'B':'whiteforest', 'c':'Chocolate'};
    Map colors = {1:'Brown', 2:'Yellow', 3:'Indigo'};
    var newerMap = {
       ...cakes,
       ...colors
    };
  print(newerMap);
}

输出。


{'A':'Blackforest', 'B':'whiteforest', 'c':'Chocolate', 1:'Brown', 2:'Yellow', 3:'Indigo'}

Merging.

colors 地图中的所有配对元素都被添加到cakes 地图中,一个新的地图将两个地图中的所有键值串联起来,如输出所示。

从地图中删除配对元素

为了移除地图中的一些键值对,我们使用remove()方法。该方法在地图上被调用,一个key ,其值要从地图中移除,并传递给该方法。

语法。

Map.remove(Object Key)

传递给remove() 函数的对象键为从地图中删除的条目。


void main() {
Map x = {'A':'Blackforest', 'B':'whiteforest', 'C':'Chocolate', 1:'Brown', 
                2:'Yellow', 3:'Indigo'};
x.remove(3);
print(x);
}

输出。


{'A':'Blackforest', 'B':'whiteforest', 'c':'Chocolate', 1:'Brown', 2:'Yellow'}

Deleting.

总结

在本教程中,我们已经了解了什么是Dart中的地图以及如何创建它们。我们还学习了如何操作地图元素来输出特定的用户需求。不要忘记在你的项目中测试这些结构,以了解它们是如何完全工作的。