ubiquitour.com

Java tutoriales de colección

Un error común hecho por los nuevos programadores es almacenar todas las colecciones de datos en arrays simples. Mientras que la matriz básica es una estructura de datos grandes, tiene un número de debilidades que pueden evitarse mediante el uso de algunas de las otras estructuras de datos básicos. El marco de colecciones de Java proporciona un conjunto de interfaces de fácil uso y de las clases que implementan algunas de las estructuras de datos más comunes en informática.

Matriz básica

Lo mejor de una matriz básica de Java es que pueda leer y escribe rápidamente. Sin embargo, permanentemente agregar o quitar un elemento de la matriz requiere mucho tiempo, porque Java no permite matrices dinámicas. Cada vez que cambie el tamaño de una matriz en Java, debe reconstruir la matriz otra vez desde cero, un elemento a la vez, con un lazo. Se puede evitar siempre inicializar sus arreglos de discos para el tamaño máximo requerido en cualquier momento durante el tiempo de ejecución, pero que puede ser una dramática pérdida de la memoria y es solo 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 administrador en un arsenal oculto. Esta matriz es estratégicamente aumentó y disminuyó de tamaño periódicamente así, en promedio, agregando y quitando elementos ocurre muy rápidamente. Pero ocasionalmente, la matriz interna, oculta simplemente tiene que cambiar de tamaño, y en esos casos, la operación requerirá de una mucho mayor cantidad de tiempo.

LinkedList

El LinkedList va más allá de ArrayList y no tiene en realidad ningún arreglo alguno, oculto o no. En cambio, los registros son encadenadas juntas en nodos, cada nodo que contiene una referencia a la dirección de memoria de la siguiente. La ventaja de un LinkedList es que añadir o quitar piezas nuevas de datos siempre se produce muy rápidamente tiempo y nunca hay cualquier cambio de tamaño de una matriz a realizar. Sin embargo, es imposible acceder a los datos en medio de la lista sin pasar por la lista completa del frente o de espalda, por lo que el tiempo que tarda para leer datos desde el centro de un LinkedList pueden ser significativos.

El ArrayList permite datos en cualquier lugar dentro de ella para acceder muy rápidamente y por lo general pueden cambiar rápidamente, pero a veces requieren tiempo extra cuando su matriz interna necesita ser reconstruido. El LinkedList siempre puede añadir y eliminar datos de la lista rápidamente, pero recuperar los datos desde la mitad de la lista puede ser desperdiciador de tiempo. Esto hace el LinkedList una buena opción para pilas y colas que sólo será accesible en mismo el frente o hacia atrás, pero el ArrayList una opción mejor como un reemplazo total de la matriz simple.

HashSet

HashSet, como ArrayList y LinkedList, permite que los datos ser agregado y ser quitado muy, muy rápidamente, y también tiene una ventaja más: un HashSet se puede buscar muy rápidamente, más rápido que un arrays, ArrayLists o LinkedLists. Lo hace por realizar una operación matemática en una hoja de datos para determinar su índice en un array y luego realizar la misma operación sobre los datos que se ha buscado para obtener el índice de los datos deseados.

Si eso es confuso, no se preocupe. Lo importante es que HashSets son ideales para conjuntos de datos que tendrán que ser buscado a través de una y otra vez. Pero también tienen una debilidad importante: un Hashset no mantiene el orden de los datos que se colocan en él, y la ordenación de los elementos en el conjunto puede cambiar de un momento a otro. Por ejemplo, en una matriz básica, si se coloca un elemento en el índice 0, el programador puede contar con que quedan en el índice 0 para siempre hasta que ella cambia. Pero en un HashSet, un elemento en el índice 0 en un momento puede ser en Índice 327 en el momento siguiente.