【问题标题】:Objective-C Data Structure for Categorizing Items用于分类项目的 Objective-C 数据结构
【发布时间】:2016-06-12 23:54:38
【问题描述】:
我是 Objective-c 的新手,我正在寻找一个好的数据结构来允许对项目进行分类。假设我想对食物类型进行分类。类别是肉类、水果和蔬菜。当用户输入“苹果”时,我想知道苹果属于水果类别。此外,这些类别需要是可变的。因此,如果用户输入了未知的食物,那么他们可以将其分配给一个类别,并且该类别将被更新以记住这种新类型的食物。
我研究过使用NSMutableArray。我的想法是,我将为每种食物类别创建一个数组,数组的元素将是属于该类别的所有食物。然后我会搜索每个数组,直到找到匹配项。
类别不会太大(每个类别
有什么好的数据结构可以解决这个问题?
【问题讨论】:
标签:
objective-c
data-structures
【解决方案1】:
Objective-C 提供了 3 种数据结构,可用于您的目的,NSArray、NSSet 和 NSDictionary。这些也有可变的风格,NSSet 还提供了可以管理排序的NSOrderedSet 子类。
您应该使用什么取决于您主要对数据执行哪种操作:
- 如果您计划为每个元素分配多个类别,则可以为每个食物实例指定一个
NSMutableSet 成员。
- 您可以拥有
NSMutableArray 的 NSMutableSet 实例,每个类别一个,并将食物添加到特定的 NSMutableSet
- 您可以使用
NSMutableDictionary 将每种食物映射到其类别
但这仍然取决于您是否需要在一个方向或另一个方向上快速查找。想想NSSet 和NSDictionary 提供快速查找(因此检查元素是否包含在NSSet 中或将值映射到NSDictionary 的特定键是有效的)