Un error común que cometen los nuevos programadores es almacenar todas las colecciones de datos en arrays simples. Mientras que la matriz básica es una estructura grande de datos, que tiene una serie de puntos débiles que se pueden evitar mediante el uso de algunas de las otras estructuras de datos básicos . El Java Collections Framework proporciona un conjunto de funciones fáciles de usar interfaces y clases que implementan algunas de las estructuras de datos más comunes en informática. Matriz Basic
Lo mejor de un conjunto básico de Java es que puede leer y por escrito de forma rápida . Sin embargo , la adición o la eliminación de un elemento de la matriz de forma permanente requiere una gran cantidad de tiempo , porque Java no soporta matrices dinámicas . Cada vez que cambia el tamaño de un array en Java , debe reconstruir la matriz de nuevo desde cero , un elemento a la vez, con un lazo . Usted puede evitar esto siempre inicializar las matrices con el tamaño máximo requerido en cualquier momento de la ejecución, pero eso puede ser una pérdida dramática de la memoria y es sólo un mal diseño en general.
ArrayList
la clase ArrayList de la biblioteca java.util aborda algunos de estos problemas , envolviendo un conjunto de funciones de gestor de alrededor de una matriz oculta . Esta matriz se incrementa de manera estratégica y se redujo en tamaño periódicamente de modo que , en promedio , la adición y eliminación de elementos se produce muy rápidamente . Pero de vez en cuando , la , matriz interna oculta simplemente tiene que ser redimensionado , y en esos casos , la operación requerirá una mayor cantidad de tiempo.
LinkedList
< p> el LinkedList va más allá de la ArrayList y en realidad tiene ninguna matriz que sea, oculta o no. En cambio, los registros son encadenados en margarita junto nodos , donde cada nodo que contiene una referencia a la dirección de memoria de la siguiente. La ventaja de un LinkedList es que la adición o eliminación de nuevas piezas de datos siempre se produce muy rápidamente tiempo y nunca hay cualquier cambio de tamaño de una matriz a realizar. Sin embargo , no es posible acceder a los datos en el medio de la lista sin tener que ir a través de toda la lista de la parte delantera o trasera , por lo que el tiempo que se necesita para leer los datos desde el medio de una LinkedList puede ser significativo.
El ArrayList permite que los datos en cualquier lugar dentro de ella para acceder muy rápidamente , y por lo general se puede cambiar el tamaño de forma rápida , pero a veces requiere más tiempo cuando su matriz interna necesita ser reconstruido. El LinkedList siempre se puede añadir y eliminar datos de la lista muy rápidamente , pero la recuperación de datos desde la mitad de la lista puede ser mucho tiempo . Esto hace que el LinkedList una buena opción para pilas y colas que sólo se puede acceder en la parte delantera o trasera , pero el ArrayList una mejor opción como un reemplazo general de la matriz simple .
HashSet < br >
HashSet , como tanto el ArrayList y LinkedList , permite que los datos se agregan y se quitan muy, muy rápidamente , y también tiene una ventaja más : un HashSet se pueden buscar muy rápido , más rápido que un arrays, ArrayLists o LinkedLists . Lo hace mediante la realización de una operación matemática en un pedazo de datos para determinar su índice en una matriz, y luego de realizar la misma operación en los datos que se deben buscar para obtener el índice de los datos deseados.
Si que es confuso , no se preocupe . Lo importante es que HashSets son ideales para grupos de datos que tendrán que ser buscado a través de una y otra . Pero también tienen una debilidad significativa : un hashset no mantiene el orden de los datos que se coloca en él , y el ordenamiento de los elementos en el conjunto puede cambiar de un momento a otro . Por ejemplo, en una matriz básica , si un elemento se coloca en el índice 0 , el programador puede contar con ello queda en el índice 0 para siempre hasta que lo cambie . Pero en un HashSet , un elemento en el índice 0 en un momento bien puede ser en el índice 327 en el momento siguiente.