Hola comunidad Steemit.. Vamos a analizar algunos de los principales tipos de colecciones que se encuentran en el api de java.
Todas las clase e interfaces que conforman el marco de trabajo de las colecciones, estas son llamadas estructuras de datos, estos marcos de trabajos permiten que se guarden, accedan, recuperen y manipulen los elementos de datos que en ellas contienen.
Las diferentes clases e interfaces que están disponibles en el marco de trabajo de las colecciones se encuentra en el paquete java.util
Interfaz Collection
Se utiliza para dirigir las colecciones y manipularlas. Las clases concretas de colecciones proveen las implementaciones para la interfaz Collection, ciertas colecciones permiten elementos duplicados, mientras que otras no.
Interfaz Set
En esta interfaz 2 elementos iguales no pueden estar presentes en un conjunto, por lo tanto es un conjunto que no contiene ningún duplicado, Esta Interfaz se preocupa por la singularidad que no permite duplicados, su buen amigo el método equals() verifica cada objeto que esta agregándose a la colección para asegurar que un objeto igual no exista ya, si 2 objetos son idénticos en cuyo caso solo 1 podrá estar en la colección.
La clase HashSet
Esta se utiliza para guardar los elementos de un Set en una tabla hash, es importante notar que HashSet no garantiza el orden de sus elementos, esto porque el proceso hash usualmente no conduce a la creación de conjuntos ordenados.
Interfaz SortedSet
Los elementos en esta interfaz están ordenados en orden ascendente, o en su orden natural según el comparator que se estableció durante la creación del objeto Set, un conjunto ordenado realiza comparaciones a través de su método compareTo.
La clase TreeSet
Esta interfaz implementa la interfaz Set que garantiza el orden en la interacción, los objetos se ordenan en orden ascendente y se almacenan en la forma de un árbol de búsqueda binaria para que el acceso y recuperación de objetos sea fácil
TreeSet es una elección excelente cuando se almacenan grandes cantidades de información ordenada que necesita ser accedida rápidamente.
TreeSet es una de las 2 colecciones ordenadas, el otro es TreeMap, TreeSet utiliza una estructura de un árbol- rojo-negro, pero este garantiza que el orden será ascendente, según el orden natural.
A partir de Java 5 TreeSet implementa a NavigableSet
La clase TreeSet extiende a la clase AbstractSet e implementa las siguientes interfaces:
Interfaz List
Una lista se preocupa por el índice, esta es una colección de elementos en un orden particular, también referida como una secuencia, una List puede contener elementos duplicados.
Esta interfaz extiende de la interfaz Collection y tiene un índice de elementos, este índice es un entero, y denota la posición de elementos en la lista, el índice también ayuda a incluir un nuevo elemento en la lista en la posición especifica requerida.
Sus principales métodos son:
La clase ArrayList
Piense en un arreglo o matriz, este le da rápida iteración y rápido acceso aleatorio, es una colección ordenada por índice, ArrayLis puede cambiar de tamaño dinámicamente
La clase Vector
Un vector es básicamente lo mismo que un ArrayList, pero los métodos son vectores sincronizados sycronized.Los vectores no pueden guardar tipos de datos primitivos, ellos solo pueden guardar de tipo referencia ósea tipo Object, a diferencia de los arreglos normales los vectores pueden almacenar cualquier combinación de tipos de objetos.
La clase LinkedList
Es ordenado por índice de posición como el ArrayList, excepto que los elementos están doblemente vinculados entre sí, la clase LinkedList poseen los métodos addFirst() y addLast(), para agregar elementos al inicio y final de la lista
La Interfaz Queue
Incluida a partir de Java 5, esta provee métodos necesarios para manipular una cola, donde el primero en entrar es el primero en salir.
La clase Stack
Esta implementa operaciones básicas que se realizan con la estructura de una pila, la cual se basa en el principio del ultimo en entrar es el primero en salir.
La interfaz Map
En el mundo real existe situaciones donde se tiene 2 conjuntos de objetos, que están vinculados a través de alguna relación, se utilizan para mantener una colección de pares clave-valor, donde ambos la clave y el valor son objetos.
El Map le permite hacer cosas como buscar un valor sobre la base de la clave.
No es posible tener 2 claves duplicadas, sin embargo 2 claves diferentes pueden apuntar al mismo objeto.
La clase HashMap
Esta no garantiza el orden, cuando Ud. necesite un Map y no le interesa el orden al iterar a través de él, HashMap se basa en la clave hashCode, por lo que, al igual que HashSet es más eficiente su hashCode() mejor velocidad de acceso.
La clase Hashtable
Una tabla hash es una estructura de datos que relaciona claves con valores, se utiliza bajo circunstancias donde un acceso secuencial no es necesario. Una tabla hash no usa tan intensamente la memoria comparada con los arreglos normales y los vectores.
Hashtable se escribe con (t) minúscula
hastable es sincronizada por lo tanto es la contraparte de HashMap. Recuerde que Ud. que cuando decimos Vector y Hashtable están sincronizadas.
Nota importante un HasMap le permite tener valores null así como clave, pero un Hashtable no lo permiten
LinkedHashMap
Al igual que su homologo LinkedHashSet este mantiene el orden de inserción, a pesar que es más lento que HashMap para añadir y eliminar elementos.
La Intefaz SortedMap
Esta añade la misma funcionalidad de ordenamiento que SortedSet agregada a la interfaz Set
TreeMap
Este es un Map ordenados, y ya Ud. sabe que por defecto es ordenado por el orden natural de los elementos.
TreeMap proporciona una implementación de la interfaz SortedMap que usa un árbol de búsqueda binario para el almacenamiento, se guardan los elementos en orden ascendente.
a partir de java 5 TreeMap implementa NavigableMap
La clase PriorityQueue
Esta clase es nueva en java 5, las colas de base pueden ser atendidas con LinkedList, el objetivo de PriorityQueue adicionalmente cada elemento tiene una "prioridad" asociada. En una cola de prioridad, un elemento con alta prioridad se sirve antes que un elemento con baja prioridad.
Ud. Puede usar la clase PriorityQueue o la clase LinkedList para trabajar con colas
próximo post tendremos códigos de ejemplo y explicación
Congratulations! This post has been upvoted from the communal account, @minnowsupport, by neliobatis from the Minnow Support Project. It's a witness project run by aggroed, ausbitbank, teamsteem, theprophet0, someguy123, neoxian, followbtcnews, and netuoso. The goal is to help Steemit grow by supporting Minnows. Please find us at the Peace, Abundance, and Liberty Network (PALnet) Discord Channel. It's a completely public and open space to all members of the Steemit community who voluntarily choose to be there.
If you would like to delegate to the Minnow Support Project you can do so by clicking on the following links: 50SP, 100SP, 250SP, 500SP, 1000SP, 5000SP.
Be sure to leave at least 50SP undelegated on your account.
Great post! You've earned a 66.67% upvote from @dolphinbot