我在这里的用法是,我需要在一组字符串(例如同义词)中搜索字符串。如果我在字符串集中找到相关的搜索词,那么我将显示与该字符串集相关联的值集。我目前正在考虑将其实现为Map,但不确定这是否可行。
我对在这种情况下可以使用的最佳数据结构感到困惑吗?
谢谢你的帮助。
编辑取代了Set数组,因为它更有意义
场景:
Set-1 ={水罐,罐子,瓶子,杯子} Set-2 ={“储备水”,“储存果汁”,“商店咖啡”}
对于从水罐、罐子、瓶子、杯子收到的任何输入,我都应该从Set-2返回与其相关的属性。简单地说,当Set-1中的任何单词匹配时,我需要返回整个Set-2。希望这能澄清我的问题。
发布于 2014-01-30 17:24:09
您可以对这种行为进行子类NSObject。
@interface Synonyms : NSObject
@property NSArray *strings;
@property NSArray *values;
-(NSArray *)searchForWord:(NSString *)searchWord;
@end
@implementation Synonyms
-(NSArray *)searchForWord:(NSString *)searchWord{
BOOL found=NO;
//add code to search for that search term in strings array
if(found)
return self.values;
else
return nil;
}
@end因此,首先创建所有这些synonyms instances并将它们存储在NSArray中。为每个实例分配字符串和值数组。
当用户输入搜索词时,调用数组中每个元素的searchForWord函数.如果找到,它将不返回零object.else无同义词。
第2部分:
如果您正在寻找以下类型的行为,例如:
Dictionary myDic;
myDic.Add("car", "automobile");
myDic.Add("car", "autovehicle");
myDic.Add("car", "vehicle");
myDic.Add("bike", "vehicle");
myDic.ListOSyns("car") // should return {"automobile","autovehicle","vehicle" ± "car"}
// but "bike" should NOT be among the words returned然后你可以使用NSDictionary,
NSDictionary *dictionary =@{@"car":@[@"automobile",@"autovehicle",@"vehicle"],@"bike":@[@"vehicle"]};
NSArray *values =[dictionary objectForKey:@"search-term"];
if(values==nil)
//no result
else
return values;https://stackoverflow.com/questions/21463020
复制相似问题