我是objective-c的新手,我正在寻找一个好的数据结构来允许对项目进行分类。我们想说我想对食物种类进行分类。类别是肉类,水果和蔬菜。当用户输入" apple"那时我想知道苹果属于水果类。此外,这些类别需要是可变的。因此,如果用户输入未知食物,那么他们可以将其分配到一个类别,并且类别将被更新以记住这种新类型的食物。
我看过使用NSMutableArray。我的想法是,我会为每类食物制作一个阵列,阵列的元素将是属于该类别的所有食物。然后我会搜索每个数组,直到找到匹配为止。
这些类别不会太大(每个项目大约5,000个项目),但足够大,我希望对它们进行排序并考虑其他因素以便快速搜索。
有什么好的数据结构可以解决这个问题?
答案 0 :(得分:2)
Objective-C提供了3个数据结构,可用于您的目的,NSArray
,NSSet
和NSDictionary
。这些也有可变的味道,NSSet
也提供了可以管理排序的NSOrderedSet
子类。
您应该使用的内容取决于您将主要针对您的数据执行哪种操作:
NSMutableSet
成员。NSMutableArray
个NSMutableSet
个实例,每个类别一个,并将食物添加到特定NSMutableSet
NSMutableDictionary
将每种食物映射到其类别但仍然取决于你是否需要在一个方向或另一个方向快速查找。只需考虑NSSet
和NSDictionary
提供快速查找(这样就可以有效地检查某个元素是否包含在NSSet
中,或者将值映射到特定的键一个NSDictionary
)