F# - 可变字典

Dictionary<'TKey, 'TValue> 类是 F# 地图数据结构的可变模拟,并且包含许多相同的函数。

回顾一下 F# 中的"映射"章节,映射是一种特殊类型的集合,它将值与键关联起来。

创建可变字典

可变字典是使用new关键字并调用列表的构造函数创建的。 下面的例子演示了这一点 −

open System.Collections.Generic
let dict = new Dictionary<string, string>()
dict.Add("1501", "Zara Ali")
dict.Add("1502","Rishita Gupta")
dict.Add("1503","Robin Sahoo")
dict.Add("1504","Gillian Megan")
printfn "Dictionary - students: %A" dict

当您编译并执行该程序时,它会产生以下输出 −

Dictionary - students: seq
[[1501, Zara Ali]; [1502, Rishita Gupta]; [1503, Robin Sahoo];
[1504, Gillian Megan]]

Dictionary(TKey, TValue) 类

Dictionary(TKey, TValue) 类表示键和值的集合。

下表提供了List(T)类的属性、构造函数和方法 −

属性

属性 描述
Comparer 获取用于确定字典键相等性的 IEqualityComparer(T)。
Count 获取字典中包含的键/值对的数量(TKey, TValue)。
Item 获取或设置与指定键关联的值。
Keys 获取包含字典中键的集合(TKey, TValue)。
Values 获取包含Dictionary(TKey, TValue)中的值的集合。

构造函数

构造函数 描述
Dictionary(TKey, TValue)() 初始化 Dictionary(TKey, TValue) 类的新实例,该实例为空,具有默认初始容量,并对键类型使用默认相等比较器。
Dictionary(TKey, TValue)(IDictionary(TKey, TValue)) 初始化 Dictionary(TKey, TValue) 类的新实例,其中包含从指定 IDictionary(TKey, TValue) 复制的元素,并使用键类型的默认相等比较器。
Dictionary(TKey, TValue)(IEqualityComparer(TKey)) 初始化 Dictionary(TKey, TValue) 类的新实例,该实例为空、具有默认初始容量并使用指定的 IEqualityComparer(T)。
Dictionary(TKey, TValue)(Int32) 初始化 Dictionary(TKey, TValue) 类的新实例,该实例为空、具有指定的初始容量,并对键类型使用默认的相等比较器。
Dictionary(TKey, TValue)(IDictionary(TKey, TValue), IEqualityComparer(TKey)) 初始化 Dictionary(TKey, TValue) 类的新实例,该实例包含从指定 IDictionary(TKey, TValue) 复制的元素并使用指定的 IEqualityComparer(T)
Dictionary(TKey, TValue)(Int32, IEqualityComparer(TKey)) 初始化 Dictionary(TKey, TValue) 类的新实例,该实例为空、具有指定的初始容量并使用指定的 IEqualityComparer(T)。
Dictionary(TKey, TValue)(SerializationInfo, StreamingContext) 使用序列化数据初始化 ictionary(TKey, TValue) 类的新实例。

方法

方法 描述
Add 将指定的键和值添加到字典中。
Clear 从 Dictionary(TKey, TValue) 中删除所有键和值。
ContainsKey 判断Dictionary(TKey, TValue)是否包含指定的key。
ContainsValue 确定Dictionary(TKey, TValue)是否包含特定值。
Equals(Object) 确定指定对象是否等于当前对象。 (继承自Object。)
Finalize 允许对象在被垃圾收集回收之前尝试释放资源并执行其他清理操作。 (继承自Object。)
GetEnumerator 返回一个迭代 Dictionary(TKey, TValue) 的枚举器。
GetHashCode 用作默认哈希函数。 (继承自Object。)
GetObjectData 实现 System.Runtime.Serialization.ISerializing 接口并返回序列化 Dictionary(TKey, TValue) 实例所需的数据。
GetType 获取当前实例的类型。 (继承自Object。)
MemberwiseClone 创建当前对象的浅表副本。 (继承自Object。)
OnDeserialization 实现 System.Runtime.Serialization.ISerializing 接口并在反序列化完成时引发反序列化事件。
Remove 从字典中删除具有指定键的值(TKey, TValue)。
ToString 返回表示当前对象的字符串。 (继承自Object。)
TryGetValue 获取与指定键关联的值。

示例

open System.Collections.Generic
let dict = new Dictionary<string, string>()

dict.Add("1501", "Zara Ali")
dict.Add("1502","Rishita Gupta")
dict.Add("1503","Robin Sahoo")
dict.Add("1504","Gillian Megan")

printfn "Dictionary - students: %A" dict
printfn "Total Number of Students: %d" dict.Count
printfn "The keys: %A" dict.Keys
printf"The Values: %A" dict.Values

当您编译并执行该程序时,它会产生以下输出 −

Dictionary - students: seq
[[1501, Zara Ali]; [1502, Rishita Gupta]; [1503, Robin Sahoo];
[1504, Gillian Megan]]
Total Number of Students: 4
The keys: seq ["1501"; "1502"; "1503"; "1504"]
The Values: seq ["Zara Ali"; "Rishita Gupta"; "Robin Sahoo"; "Gillian Megan"]