miércoles, 5 de septiembre de 2012

Manejo de Listas [Java]

Hola a todos, después de una pequeña ausencia regreso con un ejemplo que seguro les sera de utilidad, hoy les vengo a hablar de las listas.


Las listas son una estructura de datos sencilla de usar para almacenar una gran variedad de datos, en Java la Clase List es la que permite creas listas "Genéricas" para cualquier tipo de dato, aunque trabajarlas como tales a sido una actividad que quedó obsoleta por lo que es necesario indicicár los tipos de datos con los que se trabajaran, Ej.

List listaTutiFruti=new ArrayList(); //Puede almacenar cualquier dato

List<String> nombres=new ArrayList<String>(); //Acepta datos de tipo String

Ahora para comenzar a llevarnos con las listas aqui el siguiente ejemplo:

Listas.java




Para comenzar a entender explicare algunas líneas.

Para trabajar con listas se debe de importar las clases List y ArrayList que se encuentran en util por lo tanto pongo un asterisco para ahorrar una linea de código.

import java.util.*;

Dentro de la clase implemente un método llamado ImprimirLG que usare para imprimir una lista por medio de un ciclo for

    static void ImprimirLG(List l)
    {
        for(int a=0;a<l.size();a++)
        {
            System.out.println(l.get(a));
        }
        System.out.println("_______________");
    }

Se va a imprimir los elementos de la lista desde 0 hasta que sean menor a su tamaño  <el método size() sirve para calcular el tamaño de una lista>.

 for(int a=0;a<l.size();a++)

 El metodo get() retorna el valor de un elemento de la lista segun su posción <posición a

System.out.println(l.get(a));
   
Se crea una lista "genérica"   

        List lista1=new ArrayList();
Para agregar valores a una lista se utiliza el metodo add() asi como se muestra en la siguiente parte:

        lista1.add("Hola");
        lista1.add(2);
        lista1.add(3);
        lista1.add("Gato");
        lista1.add(false);

Se imprime la lista anterior

        ImprimirLG(lista1);

El resultado es el siguiente:

Hola
2
3
Gato
false

Para remover un elemento se utiliza el método remove() que se encuentra sobrecargado, es decir acepta 2 argumentos: el índice de un elemento de la lista o bien un elemento de la lista, para realizar la eliminación segun un índice se puede realizar lo siguiente, el ejemplo elimina el último elemento <se obtiene el tamaño del arreglo - 1>

        lista1.remove(lista1.size()-1);
        ImprimirLG(lista1);

El resultado es el siguiente:

Hola
2
3
Gato

Para eliminar el primer elemento de la lista se hace lo siguiente:

        lista1.remove(0);
        ImprimirLG(lista1);

El resultado es el siguiente:

2
3
Gato

Pero que sucede si lo que se necesita es eliminar por ejemplo el 2, si coloco lista1.remove(2); me eliminara el elemento en la posicion 2 "Gato" lo que se debe de hacer es una pequeña converción como se muestra a continuación:

        lista1.remove((Object) 2);
        ImprimirLG(lista1);
  
El resultado es el siguiente:
 
3
Gato

Agregamos nuevos valores para seguir jugando :D

        lista1.add("Miguel");
        lista1.add(3.1416);
        lista1.add("Java");
        ImprimirLG(lista1);

El resultado es el siguiente:

3
Gato
Miguel
3.1416
Java

Que pasa si necesito mostrar el valor de un elemento de la lista segun su índice, podemos usar el metodo get() que recibe como argumento un número entero.

        System.out.println(lista1.get(3));

El resultado es el siguiente:
 
3.1416

Para checar la posición de un elemento de la lista se usa indexOf() busquemos la posicion de la palabra Java

        System.out.println(lista1.indexOf("Java"));

El resultado es el siguiente:

4

Para checar si la lista contiene un x dato tambien existe el metodo contains() que devuelve un boolean true si contiene el dato que se pasa como argumento y false si no lo contiene para esta condición uso un if

        if(lista1.contains("Java")) 
        System.out.println("Contiene la lista el elemento 'Java'");
        else System.out.println("No contiene el Elemento Java");

El resultado es el siguiente:

Contiene la lista el elemento 'Java'
      
Que sucede si removemos el elemento Java y volvemos a intentar.

        lista1.remove("Java");
        if(lista1.contains("Java")) System.out.println("Contiene la lista el elemento 'Java'");
        else System.out.println("No contiene el Elemento Java");

El resultado es el siguiente:

No contiene el Elemento Java

Ahora ya casi para terminar, para saber si una lista esta vacia se usará isEmpty() que devuelve nuevamente un true si no hay nada en la lista y true si existe algun dato en la lista:

        if(lista1.isEmpty()) System.out.println("No contiene datos la lista");
        else System.out.println("Tiene datos la lista");


El resultado es el siguiente:

Tiene datos la lista

El método  clear() limpia todo el contenido de una lista, si evaluamos de nuevo checamos:

        lista1.clear();
        if(lista1.isEmpty()) System.out.println("No contiene datos la lista");
        else System.out.println("Tiene datos la lista");

El resultado es el siguiente:

No contiene datos la lista
    
De new ya que la lista esta vacía, la llenamos con algunos valores 

        lista1.add("Misael");
        lista1.add("Chair");
        lista1.add("Pablo");
        lista1.add("Cheis");
        lista1.add("Pedro pedrito");
        ImprimirLG(lista1);


El resultado es el siguiente:

Misael
Chair
Pablo
Cheis
Pedro pedrito

Ya... para terminar si se quiere modificar un valor de la lista por ejemplo cambiar a Pedro pedrito por Balta se usara set() pero ahora contendra 2 valores: la posición del dato a cambiar y el dato por el que se cambiara <se cuidadoso de cambiar un valor existente de lo contrario se puede generar una Exception>.

Existe algo  que se llaman Iterator que nos ayudara a recorrer todos los valores de una lista de un solo "jalon" checar como se declara y que por medio de while mientras exista un valor siguiente <hasNext()> se mostrara el siguiente valor <it.next()>:

        lista1.set(4,"Balta");
        Iterator it=lista1.iterator();
         while(it.hasNext())
        {
            System.out.println(it.next());
        }

El resultado es el siguiente:

Misael
Chair
Pablo
Cheis
Pedro pedrito
Balta

 Bueno espero les sea de utilidad el ejemplo anterior :D Suerte!

    Choose :
  • OR
  • To comment
8 comentarios:
Write comentarios
  1. Bastante bueno el post, gracias!

    ResponderEliminar
    Respuestas
    1. Muchas gracias, que bueno que te sirvio, saludos.

      Eliminar
  2. muchas gracias por el aporte me ayudo mucho.

    ResponderEliminar
  3. Gracias Por La Ayuda!! Muy Útil *__*

    ResponderEliminar


  4. Las listas en Java son variables que permiten almacenar
    grandes cantidades de datos. Son similares a los Array o a
    las Matrices. Sin embargo las nuevas tendencias en la
    programación van orientadas hacia el uso de Listas para el
    manejo de grandes volúmenes de datos.


    una lista se decara de la sieguiente manera:


    List ejemploLista = new ArrayList();

    Este tipo de lista puede almacenar cualquier tipo de dato,
    pero este enfoque ya ha quedado obsoleto. Se prefiere que se
    designe el tipo de dato que se va a almacenar. Entonces para
    declarar una lista donde guardaremos datos tipo String, hacemos
    lo siguiente:

    List ejemploLista = new ArrayList>string>();

    para poder consultar dicha lista se utiliza:

    ejemploLista.get(0);

    en donde cero es el indice o el primer dato donde se encuentra nuestro registro de la
    lista.

    si queremos eliminar determinado elemento:

    ejemploLista.remove(0);

    ResponderEliminar
  5. Muy buena información y claramente explicada.
    ABRAHAM MENDOZA BARRERA, eres un pendejo.

    ResponderEliminar