Métodos get y remove de ArrayList Java. Tipo requerido y devuelto. Ejemplo conversión de tipos. (CU00671B)

Resumen: Entrega nº71 del curso "Aprender programación Java desde cero". 
Codificación aprenderaprogramar.com: CU00671B 

 

 

GET Y REMOVE DE ARRAYLIST. EJEMPLO CONVERSIÓN DE TIPOS.

Cuando utilizamos llamadas a métodos hemos de prestar especial atención al tipo requerido por los parámetros y al tipo devuelto (si se trata de un método tipo función). Si no lo hacemos, nuestros programas pueden dar lugar a errores o resultados incoherentes. Escribe y compila el siguiente código.

 

 

//Test conversión de tipos aprenderaprogramar.com

import java.util.ArrayList;

public class TestConversion {

public static void main (String [] Args) {  

    ArrayList<Integer> miListadoAL;

    miListadoAL = new ArrayList<Integer>();

    ArrayList<Integer> tmpAL = new ArrayList<Integer>();

    miListadoAL.add(44); miListadoAL.add(7); miListadoAL.add(76); miListadoAL.add(29); miListadoAL.add(17);

 

 //Recorremos el ArrayList con un for normal quedándonos con los elementos que van a ser operados a posteriori

    for (int i=1; i <= miListadoAL.size(); i++) {

        if (miListadoAL.get(i-1) < 10) { System.out.println ("Detectado un objeto (" + i +"):"+miListadoAL.get(i-1)+ ", integer con valor menor de 10, será eliminado");

            tmpAL.add(i-1);}

        System.out.println ("Elemento en el array list (" + i + ") : " + miListadoAL.get(i-1) );

    }

 

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

       System.out.println ("Eliminamos ítem "+ (tmpAL.get(i)+1) +": " + miListadoAL.get(tmpAL.get(i) ) );

        miListadoAL.remove(tmpAL.get(i) );

    }

 

    System.out.println("Valor devuelto por size() en miListadoAL después de borrado: " + miListadoAL.size() );

    int tmpInt = 0;

    for (Integer tmpObjeto: miListadoAL) {

        System.out.println ("Elemento en el array list ("+(tmpInt+1)+") : " + tmpObjeto);

        tmpInt++;

    }

} //Cierre del main

} //Cierre de la clase

 

 

Analiza y trata de comprender el código pues aplicamos conceptos que hemos ido estudiando previamente. Si no comprendes algo repasa los contenidos anteriores antes de seguir leyendo. El resultado será algo similar a esto:

Elemento en el array list (1) : 44

Detectado un objeto (2) : 7, integer con valor menor de 10, será eliminado

Elemento en el array list (2) : 7

Elemento en el array list (3) : 76

Elemento en el array list (4) : 29

Elemento en el array list (5) : 17

Eliminamos ítem 2: 7

Valor devuelto por size() en miListadoAL después de borrado: 5

Elemento en el array list (1) : 44

Elemento en el array list (2) : 7

Elemento en el array list (3) : 76

Elemento en el array list (4) : 29

 Elemento en el array list (5) : 17

 

 

Obviamente nuestra intención va por un lado y los resultados obtenidos por otro. Algo no está funcionando, y sin embargo no nos salta ningún error. ¿Qué está ocurriendo? Tenemos una disfunción entre el tipo requerido por un método y el tipo que le pasamos. Si consultas la documentación de los métodos get y remove de la clase ArrayList, comprobarás que el método get devuelve un objeto (Integer) mientras que el método remove requiere un tipo primitivo (int). Nosotros le estamos pasando al método remove lo que nos devuelve el método get, es decir, un Integer. Para que el programa responda adecuadamente hemos de pasar a los métodos los tipos adecuados. Por tanto, hemos de pasar al método remove un tipo int y para ello hemos de indicar específicamente la conversión del objeto Integer a un primitivo int. Corrige el código introduciendo la conversión de tipos:

        //Ejemplo aprenderaprogramar.com

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

            System.out.println ("Eliminamos ítem "+ (tmpAL.get(i)+1) +": " + miListadoAL.get(tmpAL.get(i) ) );

            miListadoAL.remove( (int) tmpAL.get(i) );   //Introducida conversión de tipos

        }

 

 

El resultado ahora obtenido sí debe ser el esperado:

Elemento en el array list (1) : 44

Detectado un objeto (2) :7, integer con valor menor de 10, será eliminado

Elemento en el array list (2) : 7

Elemento en el array list (3) : 76

Elemento en el array list (4) : 29

Elemento en el array list (5) : 17

Eliminamos ítem 2: 7

Valor devuelto por size() en miListadoAL después de borrado: 4

Elemento en el array list (1) : 44

Elemento en el array list (2) : 76

Elemento en el array list (3) : 29

Elemento en el array list (4) : 17

 

 

Este ejemplo ilustra la importancia de realizar un correcto manejo de tipos en la programación Java.

 

  

 

 

 

 

Para acceder a la información general sobre este curso y al listado completo de entregas pulsa en este link:  Ver curso completo.

Para  hacer un comentario o consulta utiliza los foros aprenderaprogramar.com, abiertos a cualquier persona independientemente de su nivel de conocimiento.

¿Puedo yo aprender?

Seas o no del área informática, si quieres aprender a programar te ofrecemos una solución guiada y personalizada: realizar un curso tutorizado on-line. Con este tipo de curso, podrás aprender a programar de forma ágil y amena.

Acceder a detalles y precios de los cursos tutorizados on-line

Política sobre cookies

Utilizamos cookies propias y de terceros para ofrecerte una mejor experiencia y servicio, de acuerdo a tus hábitos de navegación.

Si continúas navegando, consideramos que aceptas su uso. Puedes obtener más información en nuestra Política de Cookies.

En Facebook!

Ahora puedes seguirnos en Facebook. Noticias, novedades y mucho más ¡Te esperamos!

RANKING APR2+

Ranking de lenguajes y entornos de programación aprenderaprogramar.com
 

MARZO - ABRIL 2017

1. Java / J2EE
2. Entornos Oracle
3. JavaScript, jQuery
4. .NET, C#
5. Entornos SQL Server
6. HTML, CSS
7. Php, MySql
8. Android, iOS


Acceder a detalles sobre el ranking de programación aprenderaprogramar.com

FOROS APR2+

Pregunta, responde, consulta, lee, intercambia...

Participa!!! Entra en los foros aprenderaprogramar.com.

             Copyright 2006-2017 aprenderaprogramar.com                La web abierta a cualquier persona interesada en la programación