我有NSArray
个包含size
属性的对象。
如何检查NSArray
是否有两个size
具有相同值的对象?
我可以这样做:
int i = 0;
for (id item1 in myArray) {
NSDecimalNumber *size1 = [item1 size];
for (id item2 in myArray) {
NSDecimalNumber *size2 = [item2 size];
if ([size1 isEqual:size2]) {
i ++;
}
}
}
if (i > [myArray count]) {
NSLog(@"Duplicate Sizes Exist");
}
或者有更简单的方法吗?
答案 0 :(得分:3)
试试这段代码:
NSSet *myset = [NSSet setWithArray:[myarray valueForKey:@"size"]];
int duplicatesCount = [myarray count] - [myset count];
size
这里是对象属性。
答案 1 :(得分:1)
使用NSCountedSet。然后将所有对象添加到计数集中,并使用countForObject
:方法查找每个对象在数组中出现的频率。
您也可以查看此链接how-to-find-duplicate-values-in-arrays
希望它可以帮到你
答案 2 :(得分:0)
NSArray *cleanedArray = [[NSSet setWithArray:yourArraywithDuplicatesObjects ] allObjects];
使用集合将删除所有重复对象。将返回NSArray NSCountedSet并使用countForObject:
方法查找每个对象出现多少次。
答案 3 :(得分:0)
可能最简单的方法是根据大小字段对数组进行排序,然后逐步查看排序列表,查找相邻的dupes。
您还可以将每个对象“包装”在一个导出大小作为其键并使用集合的对象中。但这是很多额外的分配。
但是如果您只想知道是否存在dupes,而不是它们是哪个,请为每个对象的大小创建一个NSNumber并将NSNumber插入一个集合中。最终尺寸将告诉你有多少傻瓜。