2013-06-27 100 views
0

我在採訪中被問到我會用什麼結構來存儲100個名稱:NSDictionaryNSArray以及爲什麼。NSDictionary vs NsArray

什麼是最佳答案?

他說他想知道名稱是否存在。

+0

他們沒有給你任何更多的信息嗎?它如何使用?這些名字將如何查找?排序?名稱代表什麼? – Nate

+0

那麼,這是最有效的?哪個是最不耗內存的?您以後需要如何訪問這些名稱?您是否需要將名稱進行排序才能輕鬆查找? –

+6

如果他想知道名稱是否存在,那麼正確答案將是「NSSet」。 –

回答

2

我覺得這兩者的一些好的解釋,即使它更側重於性能方面https://stackoverflow.com/a/10545362/1415348

這真的結束了更加開放式的B/C它取決於你可能會希望做什麼數據。

現在,它被編輯了更多關於他們如何使用它的信息,我同意熱舔,NSSet將是最好的。它有方法containsObject來確定集合中的存在。 NSSet Class Reference

3

這是一個開放式問題,面試官可能對你的思考過程和你提出的問題更感興趣。簡短的答案是NSArray,如果你只需要枚舉對象。 NSDictionary,如果你需要通過一個鍵來查找對象。和NSSet,當你只需要檢查會員資格。當然,這一切都取決於物品的數量,以及它們如何使用。有100件,大概是6件,另一件是1/2件。更多關於代碼的可讀性和可理解性。

閱讀這篇舊的,但沒有過時的文章,看看每個系列的性能考慮。 http://www.cocoawithlove.com/2008/08/nsarray-or-nsset-nsdictionary-or.html

+0

提到的文章只測試給定大小的數據結構,以便更深入地分析NSArrays閱讀http://ridiculousfish.com/blog/posts/array.html – Sebastian

2

最好的答案是提出更多問題來澄清要求。 什麼樣的名字? 什麼語言和地區? 他們將如何使用? 他們會改變還是靜止? 是否存在存儲或性能問題? 依此類推。

很可能你的目標是找出你對設計的看法。 即使他們沒有回答進一步的問題,他們可能會期望至少有一些推理提供了使用各種數據結構,您可以在這些數據結構中說明如何使用這些數據結構以及爲什麼它們有意義。

我嚴重懷疑他們期待一個字的迴應