26. Clases de Colecciones

Hay varios tipos de colecciones, pero en este mini-curso, solo veremos el tipo de coleccion ArrayList. Al cual supone una semejanza a los tipicos Array, pero en este caso los ArrayList nos dotan de ventaja en cuanto que podemos manejar conjunto de objetos de forma dinamica, a lo contrario que los Array que solo nos permite manejar elementos fijos.

Diferencia entre los dos:

Con los Array teniamos tipos como:

 

int [] numeros = { aqui los numeros };

String [] textos = { "aqui el texto o cadena" };

 

Con los ArrayList tenemos tipos primitivos y tambien objetos:

 

Tipos enteros:   ArrayList <Integer> lista;

Tipos String:   ArrayList <String> lista;

Tipos Objeto:   ArrayList <Trabajadores> lista;

 

En los dos primeros casos, Integer y String, esta claro que serian tipos de numeros y cadenas de texto, sin embargo, con el tercer caso, Trabajadores, vendria de una clase "Javabean" o "Encapsulada", que esto lo veriamos mas adelante, en el cual obtendriamos elementos fijos de varios tipos.

 

COMENZANDO A TRABAJAR CON ARRAYLIST

Bien, hay dos formas de declarar los ArrayList, en nuestro caso lo haremos de forma "Generica". Quiere decir esto, que cuando declaramos la clase ArrayList, le indicaremos de que tipo vamos a trabajar. Ejemplo para declarar un ArrayList generico de tipo String:

 

ArrayList <String> lista = new ArrayList <String>();

 

Esta seria la forma de declararlo. Tambien recordar, que necesitamos importar el paquete del ArrayList que se encontraria en "java.util".

En nuestro codigo quedaria de esta forma, (te recuerdo, que siempre que importamos paquetes, estos escriben antes de la clase):

 

import java.util.ArrayList;

public class Ejemplo{

    public static void main(String[]args){

        ArrayList <String> lista = new ArrayList <String>();

    }

}

 

Ahora, hay que llenar el ArrayList de elementos de tipo String y lo hariamos de esta forma:

 

import java.util.ArrayList;

public class Ejemplo{

    public static void main(String[]args){

        ArrayList <String> lista = new ArrayList <String>();

        lista.add ("uno");

        lista.add ("dos");

        lista.add ("tres");

        lista.add ("cuatro");

        lista.add ("cinco");

    }

}

    

Y tantas veces queramos llenar el Array.

Ahora, para extraer los elementos en pantalla, lo hariamos de esta forma:

 

import java.util.ArrayList;

public class Ejemplo{

    public static void main(String[]args){

        ArrayList <String> lista = new ArrayList <String>();

        lista.add ("uno");

        lista.add ("dos");

        lista.add ("tres");

        lista.add ("cuatro");

        lista.add ("cinco");

        for (int i=0; i<lista.size(); i++){

            System.out.println (lista.get(i));

        }

    }

}

 

Al igual que el metodo "length()", en este caso, utilizamos el metodo "size()" para obtener el tamaño del Array, en el cual utilizamos un ciclo "for" para recorrer todo el Array elemento a elemento. Luego, imprimimos por pantalla y ayudandonos con el metodo "get()", que quiere decir, obtener el elemento.

Si ejecutamos esto, en la consola nos aparecera esto:

 

uno

dos

tres

cuatro

cinco

 

Todo esto, lo mismo lo podemos hacer con los tipo Integer (int), en vez de "String", o con tipos "Float" o "Double".

 

Ahora vamos a hacer este pequeño ejercicio para ver como podria trabajar los ArrayList

Creamos una sola clase que se va a llamar "Trabajadores" con su respectivo "main". A continuacion te pongo todo el codigo. Intenta no copiar y pegar, procura escribirlo desde el principio y de esta forma vas estudiando que es lo que estas haciendo.

Voy a utilizar las clase "Scanner" y "ArrayList" con lo cual tengo que importar sus paquetes. Una forma de importar todos los paquetes, si pertenecen al mismo, es de esta forma:

Esto:    import java.util.Scanner;

            import java.util.ArrayList;

Se convertiria en esto: import java.util.*;

 

Empezamos con el ejercicio:

 

import java.util.*;

public class FichaTrabajadores{

    public static void main(String[]args){

        // Declaro un ArrayList donde se almacenaran los nombres de los trabajadores

        ArrayList<String>lista = new ArrayList<String>();

        Scanner scan = new Scanner(System.in);

        int opcion;

      

        do{    // Creo un menu especial en el cual tendre siempre en pantalla

 

            System.out.println("1. Nuevo trabajador");

            System.out.println("2. Borrar trabajador");

            System.out.println("3. Ver trabajadores");

            System.out.println("4. Salir");

            System.out.print("Elige una opcion>> ");

                opcion = scan.nextInt();

 

            switch(opcion){

                case 1:

                    String nuevoNombre;

                    System.out.print("Nombre del trabajador>> ");

                        nuevoNombre = scan.next();

                    agregarTrabajador(nuevoNombre, lista);

                break;

                case 2:

                    String borraNombre;

                    System.out.print("Nombre del trabajador a borrar>> ");

                        borraNombre = scan.next();

                    borrarTrabajador(borraNombre, lista);

                break;

                case 3:

                    mostrarTrabajadores(lista);

                break;

                case 4:

                    System.out.println("Has salido de la aplicacion");

                break;

            }

        }while(opcion!=4);

    }

    public static void agregarTrabajador(String nuevoNombre, ArrayList<String>lista){

        lista.add(nuevoNombre);

    }

 

    public static void borrarTrabajador(String borraNombre, ArrayList<String>lista){

        lista.remove(borraNombre);

        System.out.println("Has borrado el trabajador "+borraNombre);

    }

 

    public static void mostrarTrabajadores(ArrayList<String>lista){

        System.out.println("VER TODOS LOS TRABAJADORES \n *************************** ");

        for(int i=0; i<lista.size(); i++){

            System.out.println(lista.get(i));

        }

    }

    

}

 

Fijate en los metodos. Por ejemplo, en el "case 1" pongo un metodo llamado "agregarTrabajador" y en sus parametros le paso el String que le he creado y el ArrayList. Con esto, luego mas abajo, fuera del metodo "main" creo un metodo con el mismo nombre y le implemento los parametros con el String y el ArrayList, de este modo importo lo que tengo arriba.

 

Con este ejercicio, puedes aprender muchas cosas, a crear menus, crear listas, crear opciones, crear y manejarte por los metodos, etc...