我对php比较陌生,很难搞清楚使用正确的数据结构。假设我有一个FooBar类,正确实施equals()
和hashCode()
。什么样的PHP收集(如果有的话)最类似于Java的hashSet?我需要一个没有重复的对象集合。有人建议使用数组和函数array_key_exists
,但我只是想知道是否有另一种方法来做到这一点?Java的HashSet相当于PHP
5
A
回答
3
从5.2版PHP提供SplObjectStorage开始,它提供了Java的套装功能:
- 关心的唯一性(同一个对象不能加两次)
- 容易通过收集迭代
- 易查的对象的存在,在收集
检查http://technosophos.com/content/set-objects-php-arrays-vs-splobjectstorage例如使用
的
2
标准PHP库(SPL)提供的PHP编程语言中可用的数据结构很少。虽然与Java Collections Framework实现相比,它们什么都不是,但有时它们可以通过提供比数组更高级的功能而变得非常有用。你可以找到可用的数据结构文件here。
PHP中最类似HashSet的数据结构是SplObjectStorage。
从文档:
的SplObjectStorage类从对象到数据提供地图或,通过忽略数据,对象集。这种双重目的在很多情况下都很有用,涉及需要唯一标识对象的情况。
PHP中的对象不执行equals()
和hashCode()
方法。对象的唯一性由spl_object_hash()
函数返回的值决定。 SplObjectStorage
类使用相同的值来唯一标识其包含的对象。可以使用SplObjectStorage::getHash($object)
方法来检索包含在SplObjectStorage
集合中的对象的标识符。
相关问题
- 1. 什么是MATLAB相当于Java HashSet?
- 2. Java等于()相当于PHP
- 3. SQL Server中的Hashset相当于
- 4. PHP MD5相当于Java
- 5. 相当于Java到PHP死
- 6. 用于PHP的Java相当于preg_grep
- 7. 相当于Java PHP的call_user_func()的
- 8. 的Java相当于PHP的HMAC-SHA1
- 9. 的Java(Android版),相当于为PHP $$ X
- 10. PHP是否有相当于Java的RequestDispatcher.forward?
- 11. 需要的Java相当于从PHP
- 12. php stristr函数在java中相当于?
- 13. Java Webservice客户端UsernameToken相当于PHP
- 14. 在java中相当于php strtr
- 15. 什么是Java相当于php json_encode
- 16. 和在PHP相当于在Java中
- 17. 在vbscript中是否有与Java的HashSet相当的功能?
- 18. callgrind相当于java?
- 19. Java相当于scala.collection.mutable.Map.getOrElseUpdate
- 20. Java相当于app.config?
- 21. Java相当于Buffer.BlockCopy
- 22. Pexpect相当于java?
- 23. Java相当于Curl
- 24. Java相当于pyftpdlib?
- 25. Java相当于warn_unused_result
- 26. Page.IsPostBack相当于PHP
- 27. 相当于在PHP
- 28. 相当于返回HashSet或索引的HashSet.Contains?
- 29. Java中的NSNotFound相当于
- 30. 相当于Java的C#Rfc2898DerivedBytes
数组将是要走的路。您可以使用PHP的array_unique函数来提取没有重复的数组,或者在插入之前使用array_key_exists。 –