这就是我需要做的事情。
NSArray有10个对象
NSArray2具有相同的10个对象但在不同的索引中。
我需要比较NSArray1索引:5是否与NSArray2索引匹配:5如果没有告诉我对象是否在NSArray2中向上或向下移动,对于该数组中的每个其他对象都是如此。 < / p>
对象具有以下属性:id和name。
关于如何实现这一目标的任何建议?
答案 0 :(得分:1)
如果你有备用RAM,可以从对象的id到数组1中的索引构建一个映射,然后扫描数组2并进行比较,如:
NSMutableDictionary *map = [[NSMutableDictionary alloc] init];
for (NSUInteger j = 0; j < array1.count; j++) {
id object = array1[j];
map[object.id] = @(j);
}
for (NSUInteger j = 0; j < array2.count; j++) {
id object = array2[j];
id identifier = object.id;
NSUInteger array1Index = [map[identifier] unsignedIntegerValue];
// Compare array1Index to j here.
}
这可以让你与一个像数组中的对象数量一样增长的运行时间进行比较,但请注意,你必须花费一些额外的RAM来制作map
。如果您愿意花更多时间,可以只与恒定的RAM成本进行比较:
for (NSUInteger j = 0; j < array1.count; j++) {
id object = array1[j];
NSUInteger k = [array2 indexOfObject:object];
// Compare j and k, note that k could be NSNotFound.
}
这应该有一个像数组计算产品一样增长的运行时间。