¿Podría alguien explicar los principales beneficios para elegir uno sobre el otro y los inconvenientes que vienen con esa elección?¿Cuáles son los pros y los contras de LinkedHashMaps vs. LinkedHashSets?
Respuesta
Resuelven diferentes problemas, LinkedHashMap realiza un mapeo de las claves de los valores, un LinkedHashSet simplemente almacena una colección de cosas sin duplicados.
Una vinculado mapa hash es de pares clave/valor de mapeo - por ejemplo, los nombres y edades de almacenamiento:
Map<String,Integer> namesAndAges = new LinkedHashMap<String,Integer>();
namesAndAges.put("Benson", 25);
namesAndAges.put("Fred", 19);
Por otra parte, un conjunto de hash vinculado es para almacenar una colección de una cosa - - nombres, por ejemplo:
Set<String> names = new LinkedHashSet<String>();
names.add("Benson");
names.add("Fred");
Estaba buscando el código fuente de ArrayList solo para asegurarme de que tenía que usar un conjunto (que tiene un buen rendimiento de búsqueda) en lugar de un ArrayList (que tiene que recorrer todos los registros para encontrar algo) –
El propósito de LinkedHashMap sobre HashMap es que LinkedHashMap también usa LinkedList internamente para almacenar el orden en que se han agregado los pares clave/valor.Por lo tanto, iterar sobre LinkedHashMap dará como resultado un par de clave/valor en el orden en que se agregaron, mientras que un HashMap clásico se repetirá en función del orden del código de hash de cada clave. –
Eso es correcto, pero como la pregunta era comparar LinkedHashMaps con LinkedHashSets, decidí centrarme en las diferencias, en lugar de en las similitudes. :-) – Benson
Uno es un juego, y el otro es un mapa. Elija la estructura de datos correcta para un escenario dado.
Un conjunto tiene solo valores, no se pueden insertar duplicados. Un mapa tiene un par de clave/valor. Ellos tienen diferentes usos.
Un conjunto se utilizará como una colección, pasando en un grupo de objetos, mientras que un mapa es útil para cuando tiene una clave única para identificar cada elemento y desea poder acceder mediante esa clave.
LinkedHashSet contienen internamente una lista doblemente enlazada ejecuta a través de todas sus entradas que define el orden de los elementos. Esta clase permite elementos nulos.
Esta implementación de clase no está sincronizada, por lo que debe estar sincronizada externamente. LinkedHashMap no está sincronizado o bien y debe ser sincronizado externamente
Por ejemplo:
Map map = Collections.synchronizedMap(new LinkedHashMap());
Aparte de que almacena LinkedHashSet valores individuales por elemento y almacena LinkedHashMap par clave/valor.
En el diagrama a continuación puede ver java.util.Collections. cajas sólidas muestran implementación de la clase concreta
alt text http://www.softfinity.com/diag1.png
LinkedHashMap
y LinkedHashSet
tiene sólo una diferencia y que viene por HashMap
y HashSet
diferencia, sus padres. De nuevo, HashSet
es solo una variación de HashMap
. Puede decir HashSet
como HashMap
con todos los valores apuntando a un único objeto final. Por lo tanto, ambos no te dan muchas diferencias.
Al usar LinkedHashSet
, debe usar solo un objeto final que no sean sus llaves. Usando LinkedHashMap
, si establece los valores como nulos para todas las claves, entonces es mejor que LinkedHashSet para el propósito del conjunto.
- 1. Objeto de solicitud, ¿cuáles son los pros y los contras?
- 2. ¿Cuáles son los pros y los contras de usar Global.asax?
- 3. ¿Cuáles son los pros y los contras de la UCI?
- 4. ¿Cuáles son los pros y los contras de Solr & ElasticSearch?
- 5. ¿Cuáles son los pros y los contras de TreeSet
- 6. ¿Cuáles son los pros y los contras de usar Castle Active Record vs Straight NHibernate?
- 7. ¿Cuáles son los pros y los contras de HTML5 Canvas vs. SVG + Raphael.js?
- 8. ¿Cuáles son los pros y los contras de fs.createReadStream vs fs.readFile en node.js?
- 9. Ruby daemons vs daemon-kit gems: ¿Cuáles son los pros y los contras?
- 10. long vs Guid for the Id (Entity), cuáles son los pros y los contras
- 11. newid() vs newsequentialid() ¿Cuáles son las diferencias/pros y contras?
- 12. ¿Cuáles son los pros y los contras de los submódulos de git y Repo?
- 13. ¿Cuáles son los pros/contras de 64 bit .NET?
- 14. ¿Cuáles son los pros y los contras de los procedimientos de llamada en VB.NET?
- 15. ¿Cuáles son los pros y contras (técnicos) de Flash vs AJAX/JS?
- 16. ¿Cuáles son los pros y los contras de la eliminación y las actualizaciones en cascada?
- 17. ¿Cuáles son los pros y los contras de asset_packager y Jammit?
- 18. ¿Cuáles son los pros y los contras de las bases de datos de objetos?
- 19. ¿Cuáles son los pros y los contras de almacenar archivos en una base de datos?
- 20. ¿Cuáles son los pros y los contras de usar un correo electrónico como nombre de usuario?
- 21. ¿Cuáles son los pros y los contras de usar una enumeración de banderas?
- 22. ¿Cuáles son los pros y los contras de las revisiones de diseño/código?
- 23. ¿Cuáles son los pros y los contras de las diversas implementaciones de Python?
- 24. ¿Cuáles son los pros y los contras de la entrada delimitada general de Ruby? (sintaxis porcentual)
- 25. ¿Cuáles son los pros y los contras de usar una plantilla de motor como Jade?
- 26. ¿Cuáles son los pros y los contras para usar un contenedor de IOC?
- 27. ¿Cuáles son los pros y los contras de ejecutar un trabajo en Hadoop usando varios idiomas?
- 28. ¿Cuáles son los pros y los contras de usar git-svn?
- 29. ¿Cuáles son los pros y los contras de adoptar HTML 5 ahora para rediseñar un sitio?
- 30. ¿Cuáles son los pros y los contras del uso de d-punteros?
Me confundí y le hice una pregunta estúpida, gracias por las respuestas rápidas. –