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]]

字典(TKey,TValue)类

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

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

特性

财产 描述
比较器 获取用于确定字典键相等性的 IEqualityComparer(T)。
数数 获取Dictionary(TKey, TValue)中包含的键/值对的数量。
物品 获取或设置与指定键关联的值。
按键 获取包含 Dictionary(TKey, TValue) 中键的集合。
价值观 获取包含 Dictionary(TKey, TValue) 中的值的集合。

构造函数

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

方法

方法 描述
添加 将指定的键和值添加到字典中。
清除 从字典中删除所有键和值(TKey,TValue)。
包含键 确定 Dictionary(TKey, TValue) 是否包含指定的键。
包含值 确定 Dictionary(TKey, TValue) 是否包含特定值。
等于(对象) 确定指定对象是否等于当前对象。(继承自对象。)
最终确定 允许对象在被垃圾收集回收之前尝试释放资源并执行其他清理操作。(继承自对象。)
获取枚举器 返回一个遍历 Dictionary(TKey, TValue) 的枚举器。
获取哈希码 用作默认的哈希函数。(继承自对象。)
获取对象数据 实现 System.Runtime.Serialization.ISerialized 接口并返回序列化 Dictionary(TKey, TValue) 实例所需的数据。
获取类型 获取当前实例的类型。(继承自对象。)
会员克隆 创建当前对象的浅表副本。(继承自对象。)
关于反序列化 实现 System.Runtime.Serialization.ISerialized 接口并在反序列化完成时引发反序列化事件。
消除 从 Dictionary(TKey, TValue) 中删除具有指定键的值。
转字符串 返回表示当前对象的字符串。(继承自对象。)
尝试获取价值 获取与指定键关联的值。

例子

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"]