Sei sulla pagina 1di 29

Collections

JFC - Java Collection


Framework
Set de clases e interfaces de importante utilidad, en el paquete
java.util, para el manejo de colecciones de objetos en Java.

Collection
Contenedor general de cualquier coleccin que no
representa un Mapa, y por lo tanto, se comprende
como una coleccin de objetos. Es una estructura que
se define como un arreglo de longitud fija, donde la
cantidad mxima de objetos que se pueden contener
es la capacidad y la cantidad de objetos contenidos en
cierto momento es el tamao.

Map

Set de asociaciones entre objetos. Para ello,


utiliza asociaciones de llaves de valor (key-value)
para almacenar y recuperar elementos. Esto
significa que se deja a un lado el orden de los
elementos conforme se almacenan con ndices,
el orden de los elementos es indiferente debido a
que la manera de retribuirlos de la estructura
ser a partir de la asociacin de un elemento
llave (key) al cual se encuentre vinculado el
elemento valor (value).

Tipos de colecciones en Java


Los tipos de colecciones vienen representados por interfaces.
Una serie de interfaces clasifica las colecciones de Java en los
siguientes tipos:
Listas: Una lista ordenada, o secuencia. Normalmente
permiten duplicados y tienen acceso aleatorio (es decir,
puedes obtener elementos alojados en cualquier ndice como
si de un array se tratase).
Sets: Colecciones que no admiten dos elementos iguales. Es
decir, colecciones que no admiten que un nuevo elemento B
pueda aadirse a una coleccin que tenga un elemento A
cuandoA.equals(B).

Sub-interfaces que la implementan


List
Set
Mtodos que posee
add() -> Agrega un nuevo elemento a la lista
clear() -> Borra los elementos de la lista
contains() -> Determina si un elemento determinado est contenido en la lista
Sub-interfaces que la implementan
isEmpty() -> Determina si la lista se
encuentra vaca
List
iterator() ->Realiza un iterador
de la lista
Set
remove() -> Elimina un elemento determinado
size() ->Devuelve el tamao total de la lista
toArray() -> Devuelve la representacin de la lista como un arreglo

Listas
La coleccin ms bsica de Java. Las listas se identifican debido
a que le otorgan ndices a cada uno de los elementos que
contienen, segn el orden al que es almacenado el elemento al
contenedor.
Poseen la capacidad de modificar su tamao mientras los
objetos entran y salen del contenedor. Adems, debido a que a
cada elemento se le designa un ndice a la lista se le conoce
tambin como una secuencia.

Qu beneficios tienen las listas?


Acceso aleatorio.
Estn ordenadas (Podemos usarColections.sort()para ordenar los
elementos siguiendo el criterio que queramos).
Podemos aadir / eliminar elementos sin ninguna restriccin.
Siguen la notacin de los arrays, por lo que son fciles de comprender.

Qu problemas tienen las


listas?
Bajo rendimiento en operaciones especializadas respecto a otras colecciones.

Tipos de Lista
ArrayList: Muy rpida accediendo a elementos, relativamente
rpida agregando elementos si su capacidad inicial y de
crecimiento estn bien configuradas. Es la lista que deberas
usar casi siempre.

Tipos de Lista
Vector: Vector es una coleccindeprecated,un vector
crece automticamente cuando alcanza la dimensin
inicial mxima. Adems, proporciona mtodos
adicionales para aadir, eliminar elementos, e insertar
elementos entre otros dos existentes.

Un concepto importante de las sub-interfaces es que adems de


implementar sus mtodos para hacer funcionar el concepto de
la lista ordenada o secuencia, stas clases poseen todos los
mtodos de su predecesor. En otras palabras, la interfaz que
implementan hereda todos sus mtodos para la funcionalidad de
la lista.

Sub-interfaces que la implementan


Vector
ArrayList

Mtodos que implementa


indexOf() -> Devuelve el ndice con respecto a un elemento determinado
lastIndexOf() -> Devuelve el ltimo ndice contenido en la lista
istIterator() -> Determina si la lista posee un iterador
removeRange() -> Elimina un rango de elementos
set() -> Modifica el ndice de una lista con un nuevo elemento
subList() -> Devuelve una sub-lista de la lista original
get() ->Devuelve un elemento determinado de la lista

Sets
Es una coleccin de objetos sin duplicados en la cual el orden
no es importante. Se le puede referir como un juego de
elementos.
Posee la sub-interfaz SortedSet que automticamente enlista
los elementos contenidos y los devuelve en orden. Adems de
otra, NavigableSet, la cual toma esta opcin a un nivel superior
aadiendo mtodos que encuentran las opciones ms cercanas
al objeto buscado.

A diferencia de otras estructuras, utilizan la forma de la interfaz


Collection modificada con una mayor cantidad de restricciones
para asegurar la unicidad de cada elemento en la estructura.
Por lo que, si en Collection cuando se exceda la capacidad del
arreglo se retornaba una respuestafalseal querer almacenar
otro elemento, en el set adems de retornar esta respuesta por
esa condicin se retornar si el elemento ya est contenido.

Qu beneficios tienen los sets?


No permiten elementos duplicados.
Implementacin muy eficiente de.addpara
asegurarnos de que no hay duplicados.
Qu desventajas tienen?
No tienen acceso aleatorio.
Solo algunos tipos de set pueden ordenarse y lo
hacen de forma poco eficiente.

Tipos de Set
HashSet: La implementacin ms equilibrada de la
interfaz Set. Es rpida y no permite duplicados, perono
tiene ningn tipo de ordenacin. Utilzala si necesitas
un control de duplicados pero no ningn tipo de
ordenacin o acceso aleatorio.

Sub-interfaces que la implementan


SortedSet
HashSet

- No posee mtodos especficos

Tipos de colecciones en Java


Maps: Colecciones que asocian un valor a una clave. Parecido a
la estructura de array asociativo que se encuentra en otros
lenguajes. Un Mapno puede tener dos claves iguales.

Maps
Los maps son colecciones que asocian un valor con una
clave. Tanto la clave como el valor pueden ser cualquier
tipo de datos de Java: Objetos, primitivos, otras
colecciones, etc.
Las implementaciones son muy parecidas a los Sets
debido a que, internamente, utilizan un Set (la
implementacin vara segn el tipo de Map) para
garantizar que no hay elementos duplicados en las
claves.

Que ventajas tienen los maps?


Asociacin clave -> valor.
Gracias a que utilizan internamente un Set, garantizan
que no habr dos claves iguales.
Es fcil reconocer cuando necesitamos usar un Map.
Qu desventajas tienen los maps?
Rendimiento no muy elevado comparado con otras
colecciones.

Sub-interfaces que la implementan


HashMap
HashTable
SortedMap
Mtodos que implementa
clear() -> Borra los elementos del mapa
containsKey() -> Determina si el mapa contiene una llave determinada
containsValue() -> Determina si el mapa contiene un elemento determinado
entrySet() -> Retorna un set con las relaciones de los elementos contenidos en el mapa
get() -> Devuelve un elemento determinado contenido en el mapa
keySet() -> Devuelve un set con las llaves contenidas en el mapa
put() -> Agrega un elemento al mapa
size() -> Devuelve el tamao del mapa
values() -> Devuelve una coleccin de los elementos contenidos en el mapa

Tipos de Map
HashMap: La implementacin ms genrica de Map. Un
array clave->valor que no garantiza el orden de las
claves (de la misma forma que un HashSet). Si necesitas
un Map no-concurrente que no requiera ordenacin de
claves, este es el tuyo. El cdigo de HashSet, utiliza un
HashMap internamente.

Tipos de Map
SortedMap: Esta interfaz es muy similar a la interface Map. Tan solo se
diferencia en que SortedMap permite que los elementos dentro del conjunto
de la coleccin estn ordenados totalmente, facilitando por tanto su acceso
en bsquedas y haciendo ms rpido su consulta.
Los elementos del sortedmap (mapa ordenado) estn ordenados por sus
elementos claves.

Tipos de Map
HashTable: Mapdeprecatedy concurrente. Bsicamente, es un
HashMap concurrente que no debes usar nunca. En su lugar,
utiliza ConcurrentHashMap.

Notas finales
A la hora de usar colecciones en Java, lo ms importante es elegir el tipo de
coleccin. Cuando trabajemos con colecciones, siempre declararemos las
instancias con el nombre de su interfaz, aprovechando el enlace dinamico.
De esta forma, aunque la implementacin cambie en el futuro, podemos
tener claro que la aplicacin no va a dar fallos (ya que estamos usando las
interfaces y estas tienen los mtodos que usan sus implementaciones).
A la hora de escoger la implementacin de cada tipo de coleccin, debemos
verificar dos cosas:
Si estamos trabajando en un entorno concurrente o no.
En el rendimiento de las operaciones que vamos a necesitar en las
distintas implementaciones vlidas para nuestro entornos (concurrentes o
no).

https://docs.oracle.com/javase/8/docs/technotes/guides/collections/overview.html
http://www.conocimientosweb.net/dcmt/ficha20831.html
http://www.luaces-novo.es/guia-de-colecciones-en-java/
https://www.youtube.com/watch?v=zXZ1qSeuO90
http://docs.oracle.com/javase/8/docs/api/index.html
https://www.assembla.com/wiki/show/almejoLisp/JFC_-_Java_Collection_Framework_
http://aprenderaprogramar.com/index.php?
option=com_content&view=article&id=614:interfaces-map-y-sortedmap-del-apide-java-clases-hashmap-y-treemap-ejemplo-diferencias-cu00922c&catid=58:cursolenguaje-programacion-java-nivel-avanzado-i&Itemid=180

Potrebbero piacerti anche