Problema de arrays

Iniciado por 4dr14n31t0r, 19 Enero 2016, 14:28 PM

0 Miembros y 1 Visitante están viendo este tema.

4dr14n31t0r

¿Existe algun metodo equivalente a ... ?Arrays.asList(1,2,3,4,5,6,7,8,9,0).toArray()
En otras palabras: ¿Conocen algun metodo que devuelva un array que contenga todos sus argumentos?
Algo como esto:public static <T[]> funcionQueDevuelveArray(T... t){
return t;
}

Seria muy practico, asi que tendria que haberlo digo yo.

0xFer

Tu código ya lo hace muy bien;

Código (java) [Seleccionar]
public int[] foo(int ... nums){
    return nums;
}

int[] Arreglo = foo(5,4,4,2,4);


Vaya, es que no sé para qué querrías hacer eso  :huh:
Código (java) [Seleccionar]
int getRandomNumber(){
    return 4; //chosen by fair dice roll
              //guaranteed to be random
}

crack81

Exacto yo tampoco le veo sentido si lo que quieres es inicializar un arreglo
pues basta que hagas esto

Código (java) [Seleccionar]
int []arreglo={1,2,3,4,5};

Si C/C++ es el padre de los lenguajes entonces ASM es dios.

4dr14n31t0r

Dices que para inicializar un arreglo puedes usarint[] i = {1,2,3,4,5,6,7,8,9,0};Pero, ¿Te has fijado que, por ejemplo, si lo declaras e instancias en distintas lineas de ese modo te da error de compilación?
De todos modos, que no sepas para que pueda servir algo no significa que no sea util. De momento solo quiero saberlo por curiosidad.
Además,(y esto va para el tipo de mas arriba) ya se que puedo hacer un código tal que asi://No se porque los ingleses le llaman "foo" a las funciones que usan de ejemplo
//En los diccionarios de ingles tampoco encuentro nada =/
public <T[]> foo(T ... nums){
    return nums;
}
int[] Arreglo = foo(5,4,4,2,4);
Pero la pregunta es si YA EXISTE un metodo como ese implantado en java para no tener que crearlo una y otra vez cada vez que quiera darle uso

0xFer

#4
Nadie ha dicho que no sea útil, al menos yo no pretendía hacerlo, lo que quise decir es que no conozco cuál es la utilidad. Me gustaría conocerla, todo conocimiento viene bien.

Citar¿Te has fijado que, por ejemplo, si lo declaras e instancias en distintas lineas de ese modo te da error de compilación?

Se puede así:

Código (java) [Seleccionar]
int[] Arreglo;
Arreglo = new int[]{24,2,2};


y no veo mucha diferencia.

Suerte.
Código (java) [Seleccionar]
int getRandomNumber(){
    return 4; //chosen by fair dice roll
              //guaranteed to be random
}

4dr14n31t0r

#5
¡OSTRAS! ¡PUES NO LO SABIA!
Cuando lo intentaba en lineas diferentes hacia esto:int[] i;
i = {1,2,3,4,5,6,7,8,9,0}//Error de compilación

Ahora si entiendo porque preguntabas si tenia una utilidad =D
Lo de la funcion era simplemente para hacer int[]{1,2,3,4,5,6,7,8,9,0}De la unica forma que se me ocurria, es decir, devolviendo el array de los argumentos de la funcion.

¿Por cierto, donde aprendiste eso? he visto muchos tutoriales en internet y en ninguno de ellos lo enseñan =/ De hecho, no sale ni en el tutorial oficial de Oracle:
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html

De todos modos voy a dar este tema por zanjado, aunque todavia esta pendiente tu respuesta.

0xFer

#6
Código (java) [Seleccionar]
int[] arreglo;

Con eso te creas una referencia a un arreglo, pero solo una referencia, es decir, puede estar apuntando a nada( una referencia nula) o puede estar apuntando a un arreglo. En el caso anterior es simplemente una referencia nula.

con new puedes crear un objeto y hacer que una referencia apunte al objeto. Puedes crear tantos objetos quieras y hacer que la referencia apunte a ellos:
   
Código (java) [Seleccionar]
int[] arreglo;
arreglo = new int[] {3,4,1};
arreglo = new int[] {3,4,1,4,2,3};
arreglo = new int[] {3,4,1,4,2,3,4,2,4,2};

          
la referencia "arreglo" se queda con el último objeto creado, pero ¿Qué pasa con los objetos anteriores? Pues java tiene algo que se llama recolector de basura y te hace el favor de eliminar los objetos que ya no estas utilizando cuando le parezca conveniente, ¿y siempre lo hace? Pues por algo java consume mucha Memoria RAM, pero no tienes que estar preocupándote de eliminar los objetos.

Esto solo es válido para los objetos, no es lo mismo con las variables primitivas int,char,float etc..
Ahora no sé si lo que escribí fue en vano, al menos creo que entenderás que un arreglo es una especie de objeto por si ya sabías el resto.


Edito: El código que no sabías es sólo una forma diferente de hacer esto;

Código (java) [Seleccionar]
// declares an array of integers
        int[] anArray;

        // allocates memory for 10 integers
        anArray = new int[10];
           
        // initialize first element
        anArray[0] = 100;
        // initialize second element
        anArray[1] = 200;
        // and so forth
        anArray[2] = 300;
        anArray[3] = 400;
        anArray[4] = 500;
        anArray[5] = 600;
        anArray[6] = 700;
        anArray[7] = 800;
        anArray[8] = 900;
        anArray[9] = 1000;


Suerte.
Código (java) [Seleccionar]
int getRandomNumber(){
    return 4; //chosen by fair dice roll
              //guaranteed to be random
}

4dr14n31t0r

Todo eso que me has dicho ya lo savia U,u
El caso es que en cada tutorial que veia me hablaban de una forma de inicializar los arrays asi:
int[] array = {1,2,3,4,5,6,7,8,9,0}; Sin embargo esta forma solo es valida cuando se inicializa al mismo tiempo que se declara. El caso es que nunca en mi vida vi algo comonew int[]{1,2,3,4,5,6,7,8,9,0}; ya que lo mas parecido que vi eraint[] array = {1,2,3,4,5,6,7,8,9,0};Asi que te pregunto donde has visto eso porque en todos los tutoriales, incluso en el tutorial oficial de oracle, no sale algo como eso. Pero todo lo demas que dijiste ya lo sabia.

0xFer

Yo lo descubrí. Me puse a buscar por Internet y encontré que otras personas lo utilizan( como era de esperar, claro):
Usado en una linea
Vaya, aquí lo usan muchas veces

Suerte.
Código (java) [Seleccionar]
int getRandomNumber(){
    return 4; //chosen by fair dice roll
              //guaranteed to be random
}