我有一个包含Contact对象的数组。
然后我有另一个用户数组。
class Contact: NSObject {
var name: String?
var phoneNumber: String?
var phoneNumberFormatted: String?
init(name: String, phoneNumber: String?, phoneNumberFormatted: String) {
self.name = name
self.phoneNumber = phoneNumber
self.phoneNumberFormatted = phoneNumberFormatted
}
}
class User: NSObject {
var name: String?
}
如果我的[Contact]
中的用户名称匹配,我如何从[User]
删除联系人对象?
我知道如何通过循环来实现它,但最有效的方法是什么?
答案 0 :(得分:2)
对于非平凡数组大小执行此操作的最佳(计算效率最高)方法是从您需要重复搜索的数组中预先计算一个集合,并过滤您的其他数组,仅在它们不是时才保留元素在集合中找到。
这会利用O(1)
的{{1}}查找效果。算法整体为Set
O(userPhoneNumbers.count + contacts.count)