双射字典是一种特殊的字典,它提供高效的 O(1) 时间复杂度的双向访问,使其成为反向查找性能是关键考虑因素的理想选择。 但是,这会增加内存使用量。
双射字典与标准库中的标准字典类型非常相似,共享许多相同的初始化器、方法和属性。 主要区别在于它能够双向访问元素。 在双射字典中,键和值分别被称为“左值”和“右值”,以避免混淆,因为任何一个都可以用来访问另一个。
以下示例演示如何从字典字面量创建一个双射字典,该字面量将 IANA 时区映射到其相应的 UTC 偏移量(不考虑夏令时)。
var timeZones: BijectiveDictionary = [
"America/Los_Angeles": -8,
"Europe/London": 0
"Europe/Kiev": 2,
"Asia/Singapore": 8
]
构建字典后,可以通过其左值(时区)或右值(UTC 偏移量)访问 timeZones 中的条目。
print(timeZones[left: "America/Los_Angeles"]) // prints -8
print(timeZones[right: 2]) // prints "Europe/Kiev"
当字典可变时,相同的下标也可用于设置值。
timeZones[left: "Asia/Seoul"] = 9
timeZones[right: -9] = "America/Anchorage"
将 BijectiveDictionary 作为包依赖项添加到项目的包清单中
// swift-tools-version:6.0
import PackageDescription
let package = Package(
name: "MyPackage",
dependencies: [
.package(
url: "https://github.com/ladvoc/BijectiveDictionary.git",
.upToNextMinor(from: "0.1.0")
)
],
targets: [
.target(
name: "MyTarget",
dependencies: [
.product(name: "BijectiveDictionary", package: "BijectiveDictionary")
]
)
]
)
该项目处于早期开发阶段,当前版本为 0.1.0。 目前,所有基本功能都已实现并经过测试。 但是,在 v1.0 版本发布之前,应完成以下任务
欢迎您的贡献!
本项目采用 MIT 许可证。 有关详细信息,请参阅LICENSE 文件。