我正在开发一个应用程序,我需要使用两个数组,两个数组都保持相同的自定义数据类型,MenuItem。
我需要比较它们并找到两个数组的共同元素。 我通过将两个数组转换为集合然后使用set struct的compare函数来比较两个数组。
然而,我需要将公共元素数组转换为计数集,以便我可以找到公共元素组中存在多少元素。
我遇到的问题是将公共元素数组转换为计数集。在Swift中,有一个self.thread_flag
类但没有threading.Lock
结构,就像大多数内置的swift数据类型一样:
NSCountedSet
我想基于CountedSet
类创建一个结构,以便我可以将公共元素数组转换为计数集。
let groups = Array(self.menu.keys)
//menu and cart are dictionaries the structure [MenuGroup: [MenuItem]]
let cartGroups = Array(self.cart.keys)
let group = groups[indexPath.section]
if cartGroups.contains(group) {
let items = menu[group] as [MenuItem]!
let cartItems = cart[group]
let itemsSet = Set<MenuItem>(items!)
let cartItemsSet = Set<MenuItem>(cartItems!)
let similarSet = itemsSet.intersection(cartItemsSet)
let similarArray = NSMutableArray(Array(similarSet))
let similarCounterSet = NSCountedSet(array: similarArray)
}
声明用于其他内容,与此问题无关。
有关如何做到这一点的任何想法?如果有人对这个问题采取不同的方法,也可以随意提及。
谢谢,
西蒙
答案 0 :(得分:0)
感谢Martin R我发现了如何执行此操作的示例:
有各种可用的CountedSet实现,例如https://github.com/0x7fffffff/CountedSet