Вы можете использовать Set
коллекцию.Он предоставляет эффективные способы взаимодействия с коллекциями.Подробнее здесь .
Обновленный код:
let listOfNames: Set = ["name1", "name2", "name3", "name4", "name5", "name6", "name7", "name8"]
let namesFavorited: Set = ["name2", "name3", "name5", "name6", "name8", "name9", "name10", "name11"]
let nonFav = listOfNames.subtracting(namesFavorited) // O(m*n)
let fav = listOfNames.intersection(namesFavorited) // O(m*n)
var detailNameModelArray: [DetailNameModel] = []
let nonFavDetailNames = nonFav.map { // O(nonFav.count)
DetailNameModel(name: $0, favorited: false)
}
detailNameModelArray.append(contentsOf: nonFavDetailNames)
let favDetailNames = fav.map { // O(fav.count)
DetailNameModel(name: $0, favorited: true)
}
detailNameModelArray.append(contentsOf: favDetailNames)
print(detailNameModelArray) // O(fav.count)
Вы можете сгенерировать много данных и сравнить мой метод и ваш.Я думаю, что мой метод победит.