Está en la página 1de 16

FUNDAMENTOS DEL LENGUAJE DE

PROGRAMACIÓN JAVA - ADSI

FAVA - Formación en Ambientes Virtuales de Aprendizaje

SENA - Servicio Nacional de Aprendizaje.


FUNDAMENTOS DEL LENGUAJE DE PROGRAMACIÓN JAVA - ADSI

5.5.1 USO DE LA CLASE ARRAYLIST

Para comprender mejor el uso de la clase ArrayList, se presenta el siguiente ejemplo:


package colecciones;
import java.util.ArrayList;

public class Colecciones {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
//Crea, llena e imprime una lista con números
ArrayList listaNums= new ArrayList();
listaNums.add(8);
listaNums.add(3);
listaNums.add(5);
listaNums.add(2);
listaNums.add(3);
System.out.println(“Lista de numeros: “+listaNums);
//------------------------------------------
//Crea, llena e imprime una lista con nombres
ArrayList listaNombres= new ArrayList();
listaNombres.add(“Juan”);
listaNombres.add(“Pedro”);
listaNombres.add(“Carlos”);
listaNombres.add(“Daniel”);
listaNombres.add(“Carlos”);
System.out.println(“Lista de nombres:”+listaNombres);
//------------------------------------------
//Obtener un elemento particular de la lista
System.out.println(“Numero posicion 2:”+listaNums.get(2));
System.out.println(“Nombre posicion 0:”+listaNombres.get(0));
//Reemplazar un elemento de la lista
listaNums.set(0,15);
listaNombres.set(0,”Claudia”);
//Las listas quedan así:
System.out.println(“Lista de numeros: “+listaNums);
System.out.println(“Lista de nombres:”+listaNombres);

La clase ArrayList está basada en un arreglo dinámico y permite gestionar su contenido a


través de posiciones específicas. Por implementar la interfaz List, el almacenamiento de
sus datos se da de acuerdo con el orden de inserción y permite los elementos repetidos.

FAVA - Formación en Ambientes Virtuales de Aprendizaje

SENA - Servicio Nacional de Aprendizaje. 47


FUNDAMENTOS DEL LENGUAJE DE PROGRAMACIÓN JAVA - ADSI

Figura 53. Uso de la clase arraylist

FAVA - Formación en Ambientes Virtuales de Aprendizaje

SENA - Servicio Nacional de Aprendizaje. 48


FUNDAMENTOS DEL LENGUAJE DE PROGRAMACIÓN JAVA - ADSI

5.5.2 USO DE LA CLASE LINKEDLIST

Para comprender mejor el uso de la clase LinkedList, se presenta el siguiente ejemplo:


package colecciones;
import java.util.LinkedList;
/**
*
* @author Usuario
*/
public class Colecciones {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
//Crea, llena e imprime una lista con números
LinkedList listaNums= new LinkedList();
listaNums.add(8);
listaNums.add(3);
listaNums.add(5);
listaNums.add(2);
listaNums.add(3);
//Insertar un nuevo dato al inicio de la lista
listaNums.addFirst(10);
System.out.println(“Lista de numeros: “+listaNums);
//------------------------------------------
//Crea, llena e imprime una lista con nombres
LinkedList listaNombres= new LinkedList();
listaNombres.add(“Juan”);
listaNombres.add(“Pedro”);
listaNombres.add(“Carlos”);
listaNombres.add(“Daniel”);
listaNombres.add(“Carlos”);
//Insertar un nuevo dato al inicio de la lista
listaNombres.addFirst(“Julian”);
System.out.println(“Lista de nombres:”+listaNombres);
//------------------------------------------
//Obtiene y remueve el primer elemento de la lista
System.out.println(“Elemento removido:”+listaNums.poll());
System.out.println(“Elemento removido:”+listaNombres.poll());
//Las listas quedan así:
System.out.println(“Lista de numeros: “+listaNums);
System.out.println(“Lista de nombres:”+listaNombres);

FAVA - Formación en Ambientes Virtuales de Aprendizaje

SENA - Servicio Nacional de Aprendizaje. 49


FUNDAMENTOS DEL LENGUAJE DE PROGRAMACIÓN JAVA - ADSI

Figura 54. Uso de la clase linkedlist

La clase LinkedList está basada en una lista doblemente enlazada, en la que se conoce
cuál es el primer elemento y último elemento de la lista, por esta razón, se facilitan las
operaciones que se hacen al principio o al final de la lista como la inserción o eliminación
de elementos. Por implementar la interfaz List, el almacenamiento de sus datos se da de
acuerdo con el orden de inserción y permite los elementos repetidos.

FAVA - Formación en Ambientes Virtuales de Aprendizaje

SENA - Servicio Nacional de Aprendizaje. 50


FUNDAMENTOS DEL LENGUAJE DE PROGRAMACIÓN JAVA - ADSI

5.5.3 USO DE LA CLASE HASHSET

Para comprender mejor el uso de la clase HashSet, se presenta el siguiente ejemplo:


package colecciones;
import java.util.HashSet;
/**
*
* @author Usuario
*/
public class Colecciones {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
//Crea, llena e imprime una lista con números
HashSet listaNums= new HashSet();
listaNums.add(8);
listaNums.add(3);
listaNums.add(5);
listaNums.add(2);
listaNums.add(3);
System.out.println(“Lista de numeros: “+listaNums);
//------------------------------------------
//Crea, llena e imprime una lista con nombres
HashSet listaNombres= new HashSet();
listaNombres.add(“Juan”);
listaNombres.add(“Pedro”);
listaNombres.add(“Carlos”);
listaNombres.add(“Daniel”);
listaNombres.add(“Carlos”);
System.out.println(“Lista de nombres:”+listaNombres);
//------------------------------------------
//Remueve un elemento de la lista
listaNums.remove(5);
listaNombres.remove(“Pedro”);
//Las listas quedan así:
System.out.println(“Lista de numeros: “+listaNums);
System.out.println(“Lista de nombres:”+listaNombres);

FAVA - Formación en Ambientes Virtuales de Aprendizaje

SENA - Servicio Nacional de Aprendizaje. 51


FUNDAMENTOS DEL LENGUAJE DE PROGRAMACIÓN JAVA - ADSI

Figura 55. Uso de la clase hashset

La clase HashSet basa la organización de sus elementos en un algoritmo especial,


mediante el cual, cada elemento posee una clave o identificador no manipulable a través
del cual se realiza el ordenamiento y búsqueda de los elementos de la colección. Por
esta razón el orden de los elementos almacenados en la colección es indeterminado.
Al implementar la interfaz Set, la clase HashSet tiene la característica de no permitir
elementos duplicados.

FAVA - Formación en Ambientes Virtuales de Aprendizaje

SENA - Servicio Nacional de Aprendizaje. 52


FUNDAMENTOS DEL LENGUAJE DE PROGRAMACIÓN JAVA - ADSI

Figura 56. Salida uso de la clase hashset

FAVA - Formación en Ambientes Virtuales de Aprendizaje

SENA - Servicio Nacional de Aprendizaje. 53


FUNDAMENTOS DEL LENGUAJE DE PROGRAMACIÓN JAVA - ADSI

5.5.4 USO DE LA CLASE TREESET

Para comprender mejor el uso de la clase TreeSet, se presenta el siguiente ejemplo:


package colecciones;
import java.util.TreeSet;
/**
*
* @author Usuario
*/
public class Colecciones {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
//Crea, llena e imprime una lista con números
//Crea, llena e imprime un conjunto con números
TreeSet listaNums= new TreeSet();
listaNums.add(8);
listaNums.add(3);
listaNums.add(5);
listaNums.add(2);
listaNums.add(3);
System.out.println(“Lista de numeros: “+listaNums);
//------------------------------------------
//Crea, llena e imprime un conjunto con nombres
TreeSet listaNombres= new TreeSet();
listaNombres.add(“Juan”);
listaNombres.add(“Pedro”);
listaNombres.add(“Carlos”);
listaNombres.add(“Daniel”);
listaNombres.add(“Carlos”);
System.out.println(“Lista de nombres:”+listaNombres);
//------------------------------------------
//Elementos mayores a un elemento dado
System.out.println(“Numeros mayores o iguales a 3:”+listaNums.tailSet(3));
System.out.println(“Nombres mayores o iguales a Daniel:”+listaNombres.tailSet(“Daniel”));
//Se muestran los datos en orden descendente
System.out.println(“Numeros en orden descendente: “+listaNums.descendingSet());
System.out.println(“Nombres en orden descendente:”+listaNombres.descendingSet());

FAVA - Formación en Ambientes Virtuales de Aprendizaje

SENA - Servicio Nacional de Aprendizaje. 54


FUNDAMENTOS DEL LENGUAJE DE PROGRAMACIÓN JAVA - ADSI

Figura 56. Uso de la clase treeset

La clase TreeSet mantiene siempre los elementos de la colección de manera ordenada.


Al implementar la interfaz Set, la clase TreeSet tiene la característica de no permitir
elementos duplicados. Posee un conjunto de métodos que permiten aprovechar la ventaja
de mantener siempre los datos ordenados.

FAVA - Formación en Ambientes Virtuales de Aprendizaje

SENA - Servicio Nacional de Aprendizaje. 55


FUNDAMENTOS DEL LENGUAJE DE PROGRAMACIÓN JAVA - ADSI

5.5.5 LOS GENERICS Y LAS COLECCIONES

Los datos que se almacenan en una colección siempre son de tipo Object, esto significa
que teóricamente en una colección podemos almacenar cualquier dato. Esto aunque a
primera vista parece una ventaja, en la práctica presenta dificultades, en primer lugar por
la falta de seguridad en los datos almacenados y en segundo lugar, por la necesidad de
hacer casting o conversiones en los datos almacenados para pasarlos del tipo Object a
su tipo real.

Figura 57. Uso de la clase hashset

El programa anterior compila sin problemas, porque una colección recibe datos de cualquier
tipo, debido a que todos los datos al interior de la colección son tratados como datos de
tipo Object. Esta característica no le permite al programador tener un control en tiempo
de compilación sobre la integridad de los datos almacenados. Si se intenta recuperar la
información de la lista en diferentes variables, se generan errores de compilación, por
incompatibilidad de tipo de datos:

FAVA - Formación en Ambientes Virtuales de Aprendizaje

SENA - Servicio Nacional de Aprendizaje. 56


FUNDAMENTOS DEL LENGUAJE DE PROGRAMACIÓN JAVA - ADSI

Figura 58. Error en la generación de colecciones

Las instrucciones anteriores generan error de compilación.

Para permitir recuperar los datos en su plenitud, es necesario hacer casting de datos, es
decir, realizar una conversión de datos entre el tipo Object (que es por defecto el tipo de
dato de cualquier elemento al interior de una colección) y el tipo de dato deseado.

FAVA - Formación en Ambientes Virtuales de Aprendizaje

SENA - Servicio Nacional de Aprendizaje. 57


FUNDAMENTOS DEL LENGUAJE DE PROGRAMACIÓN JAVA - ADSI

Figura 59. Casting de datos en JAVA

Para tener mayor control sobre los datos que se almacenan en una colección y para
evitar la necesidad de realizar una gran cantidad de casting a la hora de trabajar con
colecciones, a partir de la versión 5 de Java se incluye el concepto de Generics. Los
generics permiten asignarle a una colección un tipo de dato predeterminado. La sintaxis
para la definición de una colección con Generics es la siguiente:

FAVA - Formación en Ambientes Virtuales de Aprendizaje

SENA - Servicio Nacional de Aprendizaje. 58


FUNDAMENTOS DEL LENGUAJE DE PROGRAMACIÓN JAVA - ADSI

Figura 60. Error al no usar generics

En la línea 23 se define una colección y se especifica que solo almacenará datos de tipo
entero, usando Generics. En la línea 23 se intenta agregar un dato de otro tipo, con lo
cual se genera un error en tiempo de compilación:
package generics;

FAVA - Formación en Ambientes Virtuales de Aprendizaje

SENA - Servicio Nacional de Aprendizaje. 59


FUNDAMENTOS DEL LENGUAJE DE PROGRAMACIÓN JAVA - ADSI

import java.util.ArrayList;
import java.util.LinkedList;
/**
*
* @author Usuario
*/
public class Generics {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
//Se crea una colección de tipo entero para
//el almacenamiento y procesamiento de numeros
ArrayList<Integer> listaNums = new ArrayList<Integer>();
listaNums.add(2);
listaNums.add(7);
listaNums.add(5);
//Se crea una colección de tipo string para
//el almacenamiento y procesamiento de cadenas de caracteres
LinkedList<String> listaCiudades = new LinkedList<String>();
listaCiudades.add(“Manizales”);
listaCiudades.add(“Medellin”);
listaCiudades.add(“Cali”);
//Se crea una colección de tipo Alumno para
//el almacenamiento y procesamiento de Alumnos
ArrayList<Alumno> alumnos = new ArrayList<Alumno>();
alumnos.add(new Alumno(“Andres”,3.2));
alumnos.add(new Alumno(“Julian”,4.2));
alumnos.add(new Alumno(“Carlos”,4.9));
//Procesamiento de los datos almacenados en las colecciones
//sin necesidad de casting
int a=listaNums.get(0);
String b=listaCiudades.get(0);
Alumno c=alumnos.get(0);
System.out.println(“El primer numero es “+a);
System.out.println(“La primera ciudad es “+b);
System.out.println(“El alumno “+c.getNombre()+” obtuvo una nota de “+c.getNota());

FAVA - Formación en Ambientes Virtuales de Aprendizaje

SENA - Servicio Nacional de Aprendizaje. 60


FUNDAMENTOS DEL LENGUAJE DE PROGRAMACIÓN JAVA - ADSI

Figura 61. Uso de generics

FAVA - Formación en Ambientes Virtuales de Aprendizaje

SENA - Servicio Nacional de Aprendizaje. 61

También podría gustarte