Menú Curso Java Básico : Utilización de List, Set y SortedSet

(Anterior) Collections Framework, "Threads", Garbage Collection y "Assertions".
En base a su ambiente, abra un Editor de Textos para generar los siguientes ejemplos.

De entrada vale recordar que las interfases List, Set y SortedSet son descendientes de la interfase global Collection, por lo que el concepto de Polimorfismo aplica para todas las Clases mencionadas a continuación.

Las Clases del JDK que implementan la interfase List son: ArrayList y LinkedList

Las Clases del JDK que implementan la interfase Set son: HashSet y LinkedHashSet, mientras que la clase TreeSet implementa la sub-interfase SortedSet.

Código Fuente Producto.java

 
class Producto
{

    Producto(String s, int i)
    {
        nombre = s;
        cantidad = i;
    }

    String nombre;
    int cantidad;
}

  • Primeramente se define una Clase que será utilizada como el principal objeto en las agrupaciones ("Collections") descritas a continuación, esta Clase se encuentra compuesta por dos campos y un constructor para la asignación de valores.

Código Fuente Mercado.java

 
import java.util.*;

public class Mercado
{

    public static void main(String args[])
    {
	// Definir 5 instancias de la Clase Producto
        Producto m = new Producto("Pan", 6);
        Producto n = new Producto("Leche", 2);
        Producto o = new Producto("Manzanas", 5);
        Producto p = new Producto("Brocoli", 2);
        Producto q = new Producto("Carne", 2);

	// Definir un ArrayList 
        ArrayList mandado = new ArrayList();

	// Colocar Instancias de Producto en ArrayList 
        mandado.add(m);
        mandado.add(n);
        mandado.add(o);
        mandado.add(p);
	// Indica el indice de inserción 
        mandado.add(1, q);
        mandado.add(q);

	// Imprimir contenido de ArrayLists
        System.out.println(" - Lista de mandado con " + mandado.size() + " elementos");
	

	// Definir Iterator para extraer/imprimir valores 

        for( Iterator it = mandado.iterator(); it.hasNext(); ) { 
	    Producto x = (Producto)it.next();
	    System.out.println(x.nombre + " : " + x.cantidad);

	}
   

	// Eliminar elemento de ArrayList
        mandado.remove(2);
        System.out.println(" - Lista de mandado con " + mandado.size() + " elementos");
	// Definir Iterator para extraer/imprimir valores 

        for( Iterator it2 = mandado.iterator(); it2.hasNext();) { 
	    
	    Producto x = (Producto)it2.next();
	    System.out.println(x.nombre + " : " + x.cantidad);

	}

	// Eliminar todos los valores del ArrayList
        mandado.clear();
        System.out.println(" - Lista de mandado final con " + mandado.size() + " elementos");
    }
}

  • Como primer paso se importan las librerías de java.util.* donde se concentran la gran mayoría de las Clases del "Collection Framework".

  • Posteriormente se inicia la declaración de la Clase seguido de su método principal main.

  • Se definen 5 instancias de la Clase Producto diseñada anteriormente, donde cada instancia recibe sus valores de acuerdo a la definición del Constructor.

  • Seguido son agregadas estas instancias al ArrayList mediante el método add, para posteriormente imprimir el número de Objetos en el "Collection" mediante el método size.

  • Se declara una instancia Iterator la cual facilita la extracción de objetos en "Collections", para así extraer los valores del ArrayList e imprimirlos a pantalla.

  • Una vez impresos los valores del ArrayList es eliminado el objeto con índice número 2, e impreso de nuevo el tamaño del ArrayList con el método size.

  • Se define otro ciclo de extracción a través de Iterator para el ArrayList, y finalmente se eliminan todos los valores del "Collection" mediante el método clear.

Codigo Fuente Mercado2.java

 
import java.util.*;

public class Mercado2
{

    public static void main(String args[])
    {
	// Definir 5 instancias de la Clase Producto
        Producto m = new Producto("Pan", 6);
        Producto n = new Producto("Leche", 2);
        Producto o = new Producto("Manzanas", 5);
        Producto p = new Producto("Brocoli", 2);
        Producto q = new Producto("Carne", 2);

	// Definir un HashSet
        HashSet mandado = new HashSet();
        mandado.add(m);
        mandado.add(n);
        mandado.add(o);
        mandado.add(p);
        mandado.add(q);
	// Doble inserción de Objeto/referencia q
        mandado.add(q);

	// Imprimir contenido de HashSet
	// Aunque son insertados 6 elementos, el HashSet solo contiene 5
	// Lo anterior se debe a que un Set no permite elementos duplicados (q)

        System.out.println(" - Lista de mandado con " + mandado.size() + " elementos");

	// Definir Iterator para extraer/imprimir valores 

        for( Iterator it = mandado.iterator(); it.hasNext();) { 
	    Producto x = (Producto)it.next();
	    System.out.println(x.nombre + " : " + x.cantidad);

	}

	// No es posible eliminar elementos por indice
	// Un HashSet no ofrece este mecanismo, solo eliminación por valor de Objeto

	// Eliminar todos los valores del ArrayList
	mandado.clear();
        System.out.println(" - Lista de mandado final con " + mandado.size() + " elementos");
    }
}

Esta Clase es muy similar a la anterior (Mercado.java) , solo que en este caso se emplea un HashSet para agrupar los elementos, a continuación se describen las diferencias entre emplear este "Collection" y el inicial (ArrayList).

  • Como primer paso se importan las librerías de java.util.* donde se concentran la gran mayoría de las Clases del "Collection Framework".

  • Posteriormente se inicia la declaración de la Clase seguido de su método principal main.

  • Se definen 5 instancias de la Clase Producto diseñada anteriormente, donde cada instancia recibe sus valores de acuerdo a la definición del Constructor.

  • Seguido son agregadas estas instancias al HashSet mediante el método add, para posteriormente imprimir el número de Objetos en el "Collection" mediante el método size.

  • Note que el número de elementos impresos no corresponde al mismo número insertado, lo anterior se debe a que en dos ocasiones se realizó la operación de inserción sobre la referencia q, esta es una característica específica de todo Set al no permitir elementos duplicados.

  • Posteriormente es definida una instancia Iterator la cual facilita la extracción de objetos en "Collections", para así extraer los valores del HashSet e imprimirlos a pantalla.

  • A diferencia de un ArrayList, en un HashSet no pueden ser eliminados valores individualmente ya que este tipo de "Collection" carece de un índice.

  • Finalmente se eliminan todos los valores del "Collection" mediante el método clear.

Codigo Fuente Mercado3.java

 
import java.util.*;

public class Mercado3
{

    public static void main(String args[])
    {
	// Definir 5 instancias de String 
        String m = new String("Pan");
        String n = new String("Leche");
        String o = new String("Manzanas");
        String p = new String("Brocoli");
        String q = new String("Carne");
        String r = new String("Manzanas");

	// Definir un TreeSet
        TreeSet mandado = new TreeSet();
        mandado.add(m);
        mandado.add(n);
        mandado.add(o);
        mandado.add(p);
        mandado.add(q);
        mandado.add(r);

	// Imprimir contenido de TreeSet
	// Aunque son insertados 6 elementos, el TreeSet solo contiene 5
	// Lo anterior se debe a que un TreeSet no permite elementos duplicados,
	// a pesar que son empleados Objetos distintos, el TreeSet detecta que el 
	// elemento "Manzanas" es duplicado

        System.out.println(" - Lista de mandado con " + mandado.size() + " elementos");
	// Definir Iterator para extraer/imprimir valores 

        for( Iterator it = mandado.iterator(); it.hasNext();) { 
	    
	    // Notese que el orden del TreeSet refleja un orden descendente 
	    // en sus elementos independientemente del orden de inserción.
	    // Debido al uso de String's esto refleja un orden alfabético
	    String x = (String)it.next();
	    System.out.println(x);

	}

	// No es posible eliminar elementos por indice
	// Un TreeSet no ofrece este mecanismo, solo eliminación por valor de Objeto

	// Eliminar todos los valores del TreeSet
        mandado.clear();
        System.out.println(" - Lista de mandado final con " + mandado.size() + " elementos");
    }
}

Esta Clase es muy similar a la inicial (Mercado.java) , solo que en este caso se emplea un TreeSet para agrupar los elementos, a continuación se describen las diferencias entre emplear este "Collection" y los otros dos mencionados en esta sección .

  • Como primer paso se importan las librerías de java.util.* donde se concentran la gran mayoría de las Clases del "Collection Framework".

  • Posteriormente se inicia la declaración de la Clase seguido de su método principal main.

  • Se definen 5 instancias de String's, donde cada instancia recibe determinado valor; en este caso no se definieron instancias de la Clase Producto para ilustrar la característica principal de un TreeSet (Descrita a continuación) .

  • Seguido son agregadas estas instancias de String's al TreeSet mediante el método add, para posteriormente imprimir el número de Objetos en el "Collection" mediante el método size.

  • Es definida una instancia Iterator la cual facilita la extracción de objetos en "Collections", para así extraer los valores del TreeSet e imprimirlos a pantalla.

  • Note que en la impresión del TreeSet ocurre lo siguiente: Los elementos son impresos por orden alfabético independientemente del orden de inserción, esta es una característica única de un TreeSet, además de no incluirse ningún elemento duplicado, en este caso se descartó una instancia del String "Manzanas" (Esta última característica pertenece a todo Set).

  • Y finalmente se eliminan todos los valores del "Collection" mediante el método clear.

Terminos Legales de Contenido ©2000-2008 Osmosis Latina

Diseñado bajo estándares : XHTML   CSS  

webmaster@osmosislatina.com