Soy relativamente nuevo en php y tengo dificultades para encontrar la estructura de datos correcta para usar. Digamos que tengo una clase FooBar con equals()
y hashCode()
correctamente implementada. ¿Qué tipo de colección en php (si es que hay alguna) que más se parece al hashSet de Java? Necesito una colección de objetos sin duplicados. Alguien sugirió usar array y la función array_key_exists
, pero me preguntaba si hay otra forma de hacerlo.Equivalente de HashSet de Java en PHP
Respuesta
partir de la versión 5.2 de PHP ofrece SplObjectStorage, que ofrece funcionalidades de Conjunto de Java:
- se preocupa por la singularidad (el mismo objeto no se puede añadir dos veces)
- Fácil de recorrer la colección
- fácil de comprobar la existencia de un objeto en la colección
Comprobar http://technosophos.com/content/set-objects-php-arrays-vs-splobjectstorage por ejemplo del uso
Hay pocas estructuras de datos disponibles en el lenguaje de programación PHP proporcionado por la biblioteca estándar de PHP (SPL). Aunque no son nada en comparación con las implementaciones de Java Collections Framework, a veces pueden ser muy útiles al proporcionar una funcionalidad más avanzada que la de las matrices. Puede encontrar la documentación de las estructuras de datos disponibles here.
La estructura de datos más similar a HashSet en PHP sería SplObjectStorage.
De la documentación:
La clase SplObjectStorage proporciona un mapa de los objetos a los datos o, al ignorar los datos, un conjunto de objetos. Este doble propósito puede ser útil en muchos casos que involucran la necesidad de identificar objetos de manera única.
Objetos en PHP no implementan las equals()
y los métodos hashCode()
. La unicidad de los objetos está determinada por el valor devuelto por la función spl_object_hash()
. El mismo valor es utilizado por la clase SplObjectStorage
para identificar de manera única los objetos que contiene. El método SplObjectStorage::getHash($object)
se puede usar para recuperar el identificador de un objeto contenido en la colección SplObjectStorage
.
- 1. Hashset equivalente en SQL Server
- 2. Scala equivalente de nueva HashSet (Colección)
- 3. PHP __call equivalente para java
- 4. Java equivalente a preg_replace_callback de PHP
- 5. Java equivalente para mysql_real_escape_string() de PHP
- 6. equivalente Java de PHP HMAC-SHA1
- 7. equivalente en Java a PHP morir
- 8. ¿Existe el equivalente de un conjunto de Java en php?
- 9. entendimiento contiene método de Java HashSet
- 10. TreeSet/TreeMap equivalente para HashSet/HashMap (hasher personalizado)
- 11. ¿Tiene PHP un equivalente de RequestDispatcher.forward de Java?
- 12. ¿Hay algún equivalente Java de la función http_build_query de PHP?
- 13. HashSet
- 14. ¿Hay un equivalente de ucwords en java
- 15. equivalente de DataTable en Java
- 16. equivalente de memcmp() en Java?
- 17. equivalente de ungetc En java
- 18. de Java() equivalente en pitón
- 19. ¿Qué es PHP equivalente de Java Servlet Filter?
- 20. Java Webservice Cliente Nombre de usuarioToken equivalente a PHP
- 21. ¿Cuál es el equivalente Java de PHP var_dump?
- 22. equivalente en Perl de get_file_contents() de PHP
- 23. Java equivalente de OpenLayers
- 24. __LINE__ equivalente en Java?
- 25. DebugBreak equivalente en Java?
- 26. xml.etree.ElementTree equivalente en Java
- 27. sprintf equivalente en Java
- 28. Shell equivalente de php preg_match?
- 29. JavaScript equivalente de preg_replace PHP
- 30. ¿Equivalente de mysql_list_tables en PHP PDO?
Arrays sería el camino a seguir. Puede usar la función array_unique de PHP para extraer una matriz sin duplicados o usar array_key_exists antes de insertarla. –