Swift中的数组与字典搜索性能

Mag*_*goo 7 arrays performance dictionary swift

我想这可能是一个简单的答案,但我想我会快速检查......

假设我Ints在我的代码中的各个点添加一个数组,然后我想找到一个数组Int在将来是否包含某个数组.

var array = [Int]()

array.append(2)
array.append(4)
array.append(5)
array.append(7)

if array.contains(7) { print("There's a 7 alright") } 
Run Code Online (Sandbox Code Playgroud)

这比我创建字典更重要吗?

var dictionary = [Int:Int]()

dictionary[7] = 7

if dictionary[7] != nil { print("There's a value for key 7")}
Run Code Online (Sandbox Code Playgroud)

显然有这样的原因,你可能想要消除相同数字的重复条目的可能性......但我也可以用Set... 来做...我主要只是想知道dictionary[key]vs 的性能array.contains(value)

谢谢你的时间

Jon*_*lis 9

一般来说,Dictionaries提供常量,即O(1)访问,这意味着searching如果存在值并且更新它比使用a更快Array,这取决于实现可以是O(n).如果这些是你需要优化的东西,那么a Dictionary是一个不错的选择.但是,由于字典强制使用键的唯一性,因此无法在同一个键下插入多个值.

根据这个问题,我建议您阅读Ray Wenderlich的Collection Data Structures,以便更全面地了解数据结构,而不是在这里提供.