我的用例是,我需要在一组字符串中搜索一个字符串(比如同义词)。如果我在字符串集中找到相关的搜索词,那么我将显示与该组字符串相关联的值集。我目前正在考虑将其作为地图实施,但不确定,如果可能的话。
我对这种情况下可以使用的最佳数据结构感到困惑吗?
感谢您的帮助。
修改 使用Set更换数组,因为它更有意义
情境:
Set-1 = {jug,jar,bottle,cup} Set-2 = {“Store water”,“Store Juice”,“Store Coffee”}
对于我从罐子,罐子,瓶子,杯子收到的任何输入,我应该从Set-2返回与之相关的属性。简单来说,当Set-1中的任何单词匹配时,我需要返回整个Set-2。希望这会使我的问题清楚。
答案 0 :(得分:0)
你可以为这种行为继承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
函数。
如果找到,则返回的不是nil 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;