Ios 在NSMutableArray中搜索对象并删除冗余值的最有效方法

Ios 在NSMutableArray中搜索对象并删除冗余值的最有效方法,ios,algorithm,search,nsmutablearray,duplicate-removal,Ios,Algorithm,Search,Nsmutablearray,Duplicate Removal,我有一些数组,所有数组都有冗余字符串。现在我必须从数组中删除冗余字符串,但在我的场景中我负担不起暴力技术。是否有有效的方法从数组中删除冗余值?取决于最终需要什么。如果需要一个包含所有输入数组值且不重复的新数组,可以将所有对象添加到NSSet中。集合将忽略添加的重复项 如果您需要排除重复项的原始数组,最好的方法是对每个数组进行排序,然后在每个数组中递归,删除重复项。NSSet的问题是使用isEqual和hash方法。 一些备选方案: 1。重写NSString并实现哈希和isEqual: 在这种情况

我有一些数组,所有数组都有冗余字符串。现在我必须从数组中删除冗余字符串,但在我的场景中我负担不起暴力技术。是否有有效的方法从数组中删除冗余值?

取决于最终需要什么。如果需要一个包含所有输入数组值且不重复的新数组,可以将所有对象添加到NSSet中。集合将忽略添加的重复项


如果您需要排除重复项的原始数组,最好的方法是对每个数组进行排序,然后在每个数组中递归,删除重复项。

NSSet的问题是使用isEqual和hash方法。 一些备选方案:

1。重写NSString并实现哈希和isEqual:

在这种情况下,如果在isEqual方法中返回caseInsensitiveCompare的结果,则可以获得不重复的集合


1。将所有字符串大写,然后继续创建集合。

每个数组应该包含lokal唯一值还是全局唯一值?元素的顺序重要吗?局部唯一值和顺序并不重要。我建议@Jimpic给出第一个答案。我认为对数组排序不是一个好的解决方案,但这取决于数据,您必须测试在特殊情况下哪种方法更快。短内联代码:
[[NSSet setWithArray:ARRAYWITHDUPLICAES]allObjects]
thanx@jimpic它对我有用,但问题是NSSet区分大小写。例如,我有两个字符串一个是“一个”,第二个是“一个”,然后它将分别考虑它们。