Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Lorenzo31 en 08 de Abril 2015, 13:25

Título: CU00679B# Transformar un array de tipo primitivo en colección de objetos (List)
Publicado por: Lorenzo31 en 08 de Abril 2015, 13:25
Aquí dejo mi respuesta al ejercicio, muy simple, creo hace lo que se pide, mi duda de si está bien es que solo añado un Objeto String al LinkedList.

Pero mirando no es posible añadir más pues toString(boolean [] a) solo acepta array de boolean, no primitivos por separado (para luego añadirlos uno a uno al LinkedList como Strings.

AsList funcionaria igual pero enviando una referencia o apuntador a un List, que luego habria que desenredar con un Iterator imagino, así que lo deje así.

Código: [Seleccionar]
import java.util.Arrays;
import java.util.LinkedList;

public class BooleanosArray{
   
    public static void main (String[] args){

        boolean [] arrayBooleanos = {true, true, false, false, true, false};

        LinkedList <String> listaUnida = new LinkedList <String>();

        listaUnida.add(Arrays.toString(arrayBooleanos));

        System.out.println(listaUnida);
    }
}

He visto soluciones con asList pero declarando Boolean el array, Clase no boolean primitivos que entendia pide el enunciado.

Si los declaro como Objetos de clase Boolean efectivamente si se puede pasar como List a LinkedList y los asigna uno a uno en la LinkedList.

Código: [Seleccionar]
import java.util.Arrays;
import java.util.LinkedList;

public class BooleanosArray{
   
    public static void main (String[] args){

        Boolean [] arrayBooleanos = {true, true, false, false, true, false};

        LinkedList <Boolean> listaUnida = new LinkedList <Boolean>(Arrays.asList(arrayBooleanos));

        //listaUnida.add(Arrays.toString(arrayBooleanos));

        System.out.println(listaUnida);
    }
}


Cuanta información de golpe espero poco a poco con la práctica se me vaya ordenando en la cabeza todo esto que voy pez :-)
Título: Re:CU00679B Transformar un array de tipo primitivo en colección de objetos (List)
Publicado por: Mario R. Rancel en 09 de Abril 2015, 10:17
Hola Lorenzo, esta solución responde perfectamente a lo que pedía el ejercicio:

Código: [Seleccionar]
import java.util.Arrays;
import java.util.LinkedList;

public class BooleanosArray55{   
    public static void main (String[] args){
        Boolean [] arrayBooleanos = {true, true, false, false, true, false};
        LinkedList <Boolean> listaUnida = new LinkedList <Boolean>(Arrays.asList(arrayBooleanos));
        System.out.println(listaUnida);
    }
}

La transformación a String es algo que no pedía el ejercicio, ni es algo que se suela hacer habitualmente (no sé bien si lo has querido hacer para probar o si interpretaste que debías hacerlo).

Hay algo interesante: Java nos permite transformar un array de objetos (por ejemplo Boolean o String) en una lista usando asList. Pero no nos permite transformar un array de tipos primitivos en una lista usando asList.


Puede ocurrir que necesitemos transformar un array de tipo primitivo boolean a algún tipo de lista como LinkedList ó ArrayList de Boolean (es decir, pasar de un array de tipos primitivos a una colección de objetos).

Aunque no lo pedía el ejercicio, para quien tenga interés esto podría hacerse así:

Código: [Seleccionar]
import java.util.Arrays;
import java.util.LinkedList;

public class BooleanosArray9{   
    public static void main (String[] args){
        boolean [] arrayBooleanos = {true, true, false, false, true, false};
        LinkedList<Boolean> boolList = new LinkedList<Boolean>();
    for (int index = 0; index < arrayBooleanos.length; index++)   {             
                                       boolList.add(arrayBooleanos[index]);    }   
        System.out.println("boolList: "+boolList);
    }
}

Saludos
Título: Re:CU00679B# Transformar un array de tipo primitivo en colección de objetos (List)
Publicado por: Lorenzo31 en 09 de Abril 2015, 11:07
Vale mil gracias Mario, tomo nota de tus consideraciones como siempre, yo interprete un paso en toString pero luego ya me queda claro al ver otras soluciones, el que debia hacerse y el porque del ejercicio.