双向映射是一个纯Swift实现,它允许通过值实现O(1)的查找时间,并保证了键和值之间严格一对一的关系。该映射几乎是一个精确的Dictionary扩展,具有所有相同的方法和行为。
要创建BidirectionalMap
,键和值都必须是Hashable
。
var bidirectionalMap: BidirectionalMap<String, Int> = [
"Apple": 1, "Orange": 2, "Lemon": 3, "Banana": 4]
// Supports key and value access
bidirectionalMap["Apple"] // 1
bidirectionalMap[value: 1] // "Apple"
// Supports key and value setting
bidirectionalMap["Watermelon"] = 5
bidirectionalMap[value: 6] = "Grape"
bidirectionalMap[value: 5] // "Watermelon"
bidirectionalMap["Grape"] // 6
// Supports updating key and values
bidirectionalMap["Orange"] = 6
bidirectionalMap[6] // "Orange"
bidirectionalMap["Grape"] // nil
bidirectionalMap[6] = nil
双向映射支持所有正常的dictionary函数和索引以及适当的值版本。
可以通过下载源文件并复制,通过Cocoapods或Carthage安装。
双向映射在内部实现为两个映射。如果对象是通过值(Int
、String
等)存储,这将是所需空间的两倍。对于通过引用(AnyObject
)存储的对象,所需的引用空间是两倍,但不是对象本身。