| 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
Productodiseñada anteriormente, donde cada instancia recibe sus valores de acuerdo a la definición del Constructor.Seguido son agregadas estas instancias al
ArrayListmediante el métodoadd, para posteriormente imprimir el número de Objetos en el "Collection" mediante el métodosize.Se declara una instancia
Iteratorla cual facilita la extracción de objetos en "Collections", para así extraer los valores delArrayListe imprimirlos a pantalla.Una vez impresos los valores del
ArrayListes eliminado el objeto con índice número 2, e impreso de nuevo el tamaño delArrayListcon el métodosize.Se define otro ciclo de extracción a través de
Iteratorpara elArrayList, y finalmente se eliminan todos los valores del "Collection" mediante el métodoclear.
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
Productodiseñada anteriormente, donde cada instancia recibe sus valores de acuerdo a la definición del Constructor.Seguido son agregadas estas instancias al
HashSetmediante el métodoadd, para posteriormente imprimir el número de Objetos en el "Collection" mediante el métodosize.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 todoSetal no permitir elementos duplicados.Posteriormente es definida una instancia
Iteratorla cual facilita la extracción de objetos en "Collections", para así extraer los valores delHashSete imprimirlos a pantalla.A diferencia de un
ArrayList, en unHashSetno 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 unTreeSet(Descrita a continuación) .Seguido son agregadas estas instancias de
String'salTreeSetmediante el métodoadd, para posteriormente imprimir el número de Objetos en el "Collection" mediante el métodosize.Es definida una instancia
Iteratorla cual facilita la extracción de objetos en "Collections", para así extraer los valores delTreeSete imprimirlos a pantalla.Note que en la impresión del
TreeSetocurre lo siguiente: Los elementos son impresos por orden alfabético independientemente del orden de inserción, esta es una característica única de unTreeSet, 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 todoSet).Y finalmente se eliminan todos los valores del "Collection" mediante el método
clear.
