【发布时间】:2014-12-06 23:08:42
【问题描述】:
我有以下场景:
我有两个集合类(可以是 NSArray、NSMutableArray、NSSet、NSOrderedSet 或任何最适合这种情况的对象),它们包含相同类型的唯一对象(在某种意义上是唯一的对于集合中没有两个元素的所有对象,isEqual 方法将返回 true)。
假设第一个集合实例包含以下对象 (1,2,3,4,5) 和第二个 (2,3,4,6,7)。现在我需要一个方法来返回两个集合之间的差异,以及每个集合之间的差异究竟是什么的额外信息。
该示例的示例结果为:(1,5) was removed from the first collection and (6,7) added two the second collection。
我知道如果我将NSMutableArray 与排序列表一起使用并确定哪个列表的元素比另一个列表多,我可以使用removeObjectsInArray 来获取不同对象的列表(如Compare two arrays with the same value but with a different order 或How to compare and remove common objects( NSDictionaries) from 2 NSMutableArray?),但不知道哪些对象在哪个集合中。我可以创建一个临时集合并将removeObjectsInArray 的结果放入该数组中,并将另外两个初始数组与临时数组进行比较。不过似乎有点冗长。有没有更好的方法我不知道?
【问题讨论】:
-
顺序重要吗?也就是说,如果第二个数组是
4,3,2,7,6,答案会不会不一样? -
不,顺序无关紧要。
标签: ios objective-c arrays collections