我想将包含“People”对象的两个数组相交,每个数组的数组大小可能超过 10000,我想使用对象的“id”相交而不使用 for 循环。我已经使用循环我的解决方案但速度很慢。一些 People 对象可以在两个数组中具有相同的“id”,而一些对象可以具有不同的“id”。
下面是我的代码示例
示例:
class People {
var id:Int!
var name:String!
}
let object1 = People(10, John)
let object2 = People(5, Rocky)
let array1 = [object1, object2, .... , object10000]
let array2 = [objectA1, objectA2, .... , objectA10000]
最佳答案
您可以使用 PeopleIds 创建 Set 并使用 Object Id 创建 Set,如下所示:
let peoples = ...
let objects = ...
let peoplesIds = peoples.map { $0.id }
let objectsIds = objects.map { $0.id }
let peoplesIdsSet = Set(peoplesIds)
let objectsIdsSet= Set(objectsIds)
let intersectionsIds = Array(peoplesIdsSet.intersection(objectsIdsSet))
另外我建议你把它放在后台线程中工作,像这样:
DispatchQueue.global(qos: .background).async {
findIntersecionsIds()
DispatchQueue.main.async {
// done
}
}
关于swift - 在不使用 for 循环的情况下高效地在 iOS 中快速相交对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52702969/