如何排除连接2个NSArray?
我有 2 个对象数组(如 NSArray 的),我想获取第一个对象中不在第二个对象中的对象数组。
I've got 2 arrays of objects (as NSArray's) and I want to get an array of the objects in the first that aren't also in the 2nd.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
请参阅 NSMutableArray 的 -removeObjectsInArray: 方法。
See
NSMutableArray
's-removeObjectsInArray:
method.1)低效的解决方案。运行一个数组并调用每个对象 containsObject 如果没有则添加元素,否则获取下一个元素
2) 更高效:对两个数组进行排序,然后将它们并排排列。保留对最后添加的对象的引用,然后将下一个组件与该元素进行比较。如果没有匹配,您可以添加一个新的“最后”元素。
3)删除哈希表中的所有元素,然后取出下一个数组的下一个元素并检查是否可以找到“相等”的对象。最后从 HashTable 重建一个数组
4) 将所有元素放入一个 NSSet 中,然后从此 NSSet 重建一个数组
1) Inefficient solution. run over one array and call on each object containsObject if no do add the element otherwise take the next element
2) More efficient: sort both array and then step them side-by side. Keep a reference to the last added object and then compare the next components to this element. If none matches you can add a new "last" element.
3) Drop all the Elements in a HashTable then take the next elements of the next array and check whether you can find an "equal" object. At the end rebuild an Array from the HashTable
4) drop all the elements into an NSSet and after that rebuild an Array from this NSSet