php – 将对象集合限制为唯一集合
目前我有一个名为Collection的PHP类.它使用数组来保存一组唯一对象.它们是唯一的,不是因为它们具有不同的内存地址(尽管它们显然是这样),但是在集合中没有等效的对象. 我一直在阅读SplObjectStorage,它比数组具有明显的速度优势,并且可能比我的Collection类更容易维护.我的问题是SplObjectStorage不关心等价,只关注身份.例如:
所以我一直在思考如何子类化SplObjectStorage,因此它的attach()会被对象等价限制,但到目前为止它涉及将对象的$data设置为“等价签名”,这似乎需要循环通过数据结构直到我找到(或不找到)匹配值. 例如.:
有没有更好的办法? 解决方法: 如果唯一定义相等的东西是相对于另一个对象,那么我担心你想要的东西是不可能的.想想看,除非我检查每个对象,否则无法确定对象是否已包含在数组中,因此无论如何我都会有O(n)的复杂性. 但是,如果你使等式绝对,那么这是可能的.为此,您必须为每个对象生成哈希值.当且仅当它们的哈希相等时,两个对象才是相等的.一旦你有了,那么你可以用HashMap实现O(1). 在引擎盖下,这正是SplObjectStorage所做的,通过将对象的地址作为其哈希值. (编辑:北几岛) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 使用 python 管理 mysql 开发工具箱 - 1
- php – Magento:更改配置选项而不保存它
- php – 如何防止SQLITE SQLSTATE [HY000] [14]?
- ASP.NET Core托管运行Quartz.NET作业调度详解
- Golang gRPC实践 连载四 gRPC认证
- 【译】.NET 5. 0 中 Windows Form 的新特性
- 字节输入流FileInputStream读取文件-单字节
- 一步步使用SpringBoot结合Vue实现登录和用户管理
- [Go] 获取文件夹下面指定模式的文件列表 , 并且获
- [译]ASP.NET Core Web API 中使用Oracle数据库和