我有这两个词典:
let test = ["Tomorrow": "Bla", "Month": "Bla"]
print(test) // ["Tuesday": "Bla", "Month": "Bla"]
let test1 = ["Tomorrow": "Bla", "One Month": "Bla"]
print(test2) // ["One Month": "Bla", "Tuesday": "Bla"]
似乎如果我使用关键字" One"元素放在前面。为什么呢?
答案 0 :(得分:1)
Swift的Dictionary
是基于哈希的数据结构。除非有特定的排序机制,否则基于散列的结构中的项目顺序取决于几个因素:
hashValue
方法用于确定项目的桶号hashValue
可能比可用的桶数大得多,因此使用限制机制(例如模数桶数)来确定实际的桶数例如,如果在第二个示例中更改字典的大小,则项目的顺序将反转:
var test1 = [String:String]() // Use default initial capacity
test1["Tomorrow"] = "Bla"
test1["One Month"] = "Bla"
print(test1) // ["One Month": "Bla", "Tomorrow": "Bla"]
var test2 = [String:String](minimumCapacity: 11) // Use specific capacity
test2["Tomorrow"] = "Bla"
test2["One Month"] = "Bla"
print(test2) // ["Tomorrow": "Bla", "One Month": "Bla"]
由于其中一些参数不在您的控制范围内,因此Dictionary
中的项目顺序可视为任意实际目的。