You are on page 1of 4

Estructuras de datos en Java

Diferencias entre diferentes estructuras de datos en Java

LinkedList
Es una lista enlazada de Recipientes (nodos) donde cada uno contiene elementos (objetos, otras listas, etc) y uno o dos punteros hacia posiciones de memoria que apuntan al anterior o siguiente nodo. til cuando se quiere insertar o eliminar elementos al principio o al final de la lista. No permite acceder a un elemento en concreto de la lista directamente sin recorrer antes los anteriores.

ArrayList
Es una estructura de datos de tipo Array dinmica. A diferencia de los arrays clsicos (arrays estticos), un ArrayList permite aumentar el tamao del vector indefinidamente (hasta lo que la memoria permita) y agregar o quitar elementos. A diferencia de la LinkedList, la ArrayList permite acceder a cualquier elemento de la lista directamente mediante su ndice, lo que la hace especialmente adecuada para bsquedas rpidas.

HashSet
Un HashSet es una estructura de datos que contiene un conjunto de objetos. Permite buscar un objeto dentro del conjunto de forma rpida y fcil. Internamente gestiona un array y guarda los objetos utilizando un ndice calculado con un cdigo hash del objeto.

Los elementos de un HashSet no estn ordenados 1

Para aadir un elemento al HashSet se utiliza el mtodo add(Object obj). Para borrar un elemento se utiliza remove(Object obj). Para borrar todos los elementos se utiliza clear(). El tamao del HashSet se puede obtener con la funcin size()

HashMap
Un HashMap permite guardar elementos, donde cada elemento es un par clave/valor. A diferencia de un array simple donde se guarda el valor en un ndice en concreto, un HashMap determina el ndice l mismo basndose en el valor hash (hashcode) generado a partir de la clave.

TreeSet
Un TreeSet mantiene los objetos ordenados en lo que se conoce como un red-black tree, es decir, en un rbol binario balanceado (cada padre tiene como mximo 2 hijos, y cuando se inserta una entrada se autobalancea de forma que quede un rbol binario simtrico). Un TreeSet permite hacer bsquedas rpidas. No tanto como un HashMap, pero el TreeSet tiene la ventaja de estar ordenado por clave.

Ejemplo de Colecciones
import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set;

import java.util.SortedMap; import java.util.SortedSet; import java.util.TreeMap; import java.util.TreeSet; public class CollectionAll { public static void main(String[] args) { List list1 = new LinkedList(); list1.add("list"); list1.add("dup"); list1.add("x"); list1.add("dup"); traverse(list1); List list2 = new ArrayList(); list2.add("list"); list2.add("dup"); list2.add("x"); list2.add("dup"); traverse(list2); Set set1 = new HashSet(); set1.add("set"); set1.add("dup"); set1.add("x"); set1.add("dup"); traverse(set1); SortedSet set2 = new TreeSet(); set2.add("set"); set2.add("dup"); set2.add("x"); set2.add("dup"); traverse(set2); LinkedHashSet set3 = new LinkedHashSet(); set3.add("set"); set3.add("dup"); set3.add("x"); set3.add("dup"); traverse(set3);

Map m1 = new HashMap(); m1.put("map", "Java2s"); m1.put("dup", "Kava2s"); m1.put("x", "Mava2s"); m1.put("dup", "Lava2s"); traverse(m1.keySet()); traverse(m1.values()); SortedMap m2 = new TreeMap(); m2.put("map", "Java2s"); m2.put("dup", "Kava2s"); m2.put("x", "Mava2s"); m2.put("dup", "Lava2s"); traverse(m2.keySet()); traverse(m2.values()); LinkedHashMap /* from String to String */m3 = new LinkedHashMap(); m3.put("map", "Java2s"); m3.put("dup", "Kava2s"); m3.put("x", "Mava2s"); m3.put("dup", "Lava2s"); traverse(m3.keySet()); traverse(m3.values()); } static void traverse(Collection coll) { Iterator iter = coll.iterator(); while (iter.hasNext()) { String elem = (String) iter.next(); System.out.print(elem + " "); } System.out.println(); } }

You might also like