Java的HashSet的等效在PHP(Java's HashSet equivalent

2019-09-17 06:59发布

我是比较新的PHP和有一个很难搞清楚正确的数据结构使用。 比方说,我有一个类FooBar的equals()hashCode()正确实施。 在PHP是什么类型的集合(如果有的话),大多数类似Java的HashSet的? 我需要的对象没有重复的集合。 某人用阵列和功能建议array_key_exists ,但我只是想知道是否有另一种方式来做到这一点?

Answer 1:

从5.2版PHP提供SplObjectStorage,它提供了Java的集合的功能开始:

  • 关于唯一性的烦恼(同一个对象不能被两次加入)
  • 易通过收集迭代
  • 易查的对象的存在,在收集

检查http://technosophos.com/content/set-objects-php-arrays-vs-splobjectstorage例如使用



Answer 2:

还有由标准PHP库(SPL)提供的PHP编程语言提供一些数据结构。 虽然当与Java集合框架的实现相比,他们只不过,有时候他们可以通过提供比阵列的更高级的功能是非常有用的。 你可以找到可用的数据结构的文档在这里 。

在PHP中最HashSet的类数据结构将是SplObjectStorage 。

从文档:

所述SplObjectStorage类从对象到数据提供地图或,通过忽略数据,对象集。 这种双重目的可以是在涉及需要唯一标识对象很多情况下是有用的。

在PHP对象没有实现equals()hashCode()的方法。 对象的唯一性是通过从返回的值来确定spl_object_hash()函数。 相同的值用于由SplObjectStorage类以唯一地识别包含的对象。 所述SplObjectStorage::getHash($object)方法可被用于检索包含在所述对象中的的标识符SplObjectStorage集合。



文章来源: Java's HashSet equivalent in PHP