簡體   English   中英

NSArray vs NSDictionary-更好的字符串搜索

[英]NSArray vs NSDictionary - Which is better for string searching

我將在plist中存儲值列表並檢索它們。 每次調用搜索方法時,都會在列表中搜索一個值(該值可能會每次更改)。 列表中可能大約有10個值。

NSArray或NSDictionary對於搜索而言是否更好?

我認為NSArray更合適,因為至少現在我沒有鍵值對數據集,而只是一個列表。

有人可以確認,也許提供搜索陣列的最佳方法嗎?

謝謝

字典比數組更快,因為鍵是散列的。 對於數組,系統必須檢查所有項目,直到找到匹配項。

NSSet的文檔說,在測試成員資格方面,集合比數組要快。 如果沒有為每個鍵存儲的值,最好的選擇可能是將數據作為數組存儲到plist中。 在運行時,讀取數組,然后使用NSSet類方法setWithArray:將其內容加載到集合中setWithArray:

如果您的數據集很大(成千上萬個項目),我建議使用字典進行性能測試,在字典中所有值都是針對NSSet的NSNull。 (對於字典,您將使用objectForKey:對於集合,您將使用containsObject:方法

忽略時序,最好的選擇是使用NSArray。 NSArray具有各種有用的方法,例如

(NSArray *)filteredArrayUsingPredicate:(NSPredicate *)predicate

(NSIndexSet *)indexesOfObjectsPassingTest:(BOOL (^)(id obj, NSUInteger idx, BOOL *stop))predicate

可用於在數組內搜索。

問題是概念上的:

如果您有值列表,則 不得使用NSDictionary 合適的數據結構NSArrayNSSet

基本上, NSSetNSArray ,因為不必考慮順序等。

因此,如果您只需要搜索一個值 ,而順序無關緊要則最好使用的數據結構NSSet (如果需要可變則為NSMutableSet )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM