如何比较Objective-c中的各种NSArrays?

时间:2015-03-09 06:05:25

标签: ios objective-c nsarray

我的代码包含四个NSArray,每个isEqualTo:包含两个对象,这些对象代表屏幕上任意一点的XY坐标。两个或更多个数组可以包含相同的坐标集。我需要找到这四个数组中重复次数最多的坐标。在这种情况下,{{1}}方法可以提供帮助吗?

1 个答案:

答案 0 :(得分:1)

一种方法是维护NSDictionary,使用数组中的坐标作为键,然后为每个坐标(即键)维护一个计数器,只要看到相同的坐标,就会增加。

这看起来有点像这样:

NSMutableDictionary *coordinateCount = [[NSMutableDictionary alloc] init];
for (int i = 0; i < coordinates.length; i++) { // do this loop for each of your 4 arrays
   Coordinate *c = coordinates[i];
   if ([coordinateCount containsKey:c]) {
      NSInteger count = [coordinateCount[c] integerValue];
      count++;
      coordinateCount[c] = @(count);
   }
   else {
      coordinateCount[c] = @(1);
   }
}

// now you can retrieve the max count value from all collected values

请注意,此代码未经过测试,必须根据您的类型和变量名称进行调整。