我需要构建一个像Map <set,set =“”>这样的HashMap。有可能吗?</set,>

时间:2014-01-30 17:12:36

标签: ios objective-c data-structures

我的用例是,我需要在一组字符串中搜索一个字符串(比如同义词)。如果我在字符串集中找到相关的搜索词,那么我将显示与该组字符串相关联的值集。我目前正在考虑将其作为地图实施,但不确定,如果可能的话。

我对这种情况下可以使用的最佳数据结构感到困惑吗?

感谢您的帮助。

修改 使用Set更换数组,因为它更有意义

情境:

Set-1 = {jug,jar,bottle,cup} Set-2 = {“Store water”,“Store Juice”,“Store Coffee”}

对于我从罐子,罐子,瓶子,杯子收到的任何输入,我应该从Set-2返回与之相关的属性。简单来说,当Set-1中的任何单词匹配时,我需要返回整个Set-2。希望这会使我的问题清楚。

1 个答案:

答案 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;