如何比较 Objective-c 中的各种 NSArray?
How to compare various NSArrays in Objective-c?
我的代码包含四个 NSArray
,每个包含两个对象,代表屏幕上任意点的 XY 坐标。两个或多个数组可能包含同一组坐标。我需要找到这四个数组中重复次数最多的坐标。 isEqualTo:
方法在这种情况下有帮助吗?
一种方法是维护一个 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
请注意,此代码未经测试,必须根据您的类型和变量名进行调整。
我的代码包含四个 NSArray
,每个包含两个对象,代表屏幕上任意点的 XY 坐标。两个或多个数组可能包含同一组坐标。我需要找到这四个数组中重复次数最多的坐标。 isEqualTo:
方法在这种情况下有帮助吗?
一种方法是维护一个 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
请注意,此代码未经测试,必须根据您的类型和变量名进行调整。