Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: diego_godie en 14 de Septiembre 2021, 15:44
-
Buenos días! ¿como están?
Esta es mi primera intervención en este foro, espero poder ser un usuario activo siempre, ya que deseo vivir de esto (Lo llevo persiguiendo un buen par de años y se me ha hecho difícil, pero cada uno con sus luchas).
Resolví el ejercicio de la lección CU00675B del curso de programador Java partiendo de cero de aprenderaprogramar, el cual dice así:
"Crea un programa Java donde declares un array de enteros tipo int miArray1 cuyo contenido inicial sea {2, -4, 3, -7}. Muestra su contenido por pantalla. Copia el contenido de este array a un ArrayList denominado lista1 y muestra su contenido por pantalla. ¿Qué tipo de datos almacena el array? ¿Qué tipo de datos almacena el ArrayList?"
Esta es mi solución:
import java.util.ArrayList;
public class CopiarContenido
{
public static void main(String [] args){
ArrayList<Integer> lista1 = new ArrayList<Integer>();
int[] miArray1 = {2, -4, 3, -7};
for (int i=0; i < miArray1.length; i++){
System.out.println("miArray1[" + i + "]:" + miArray1[i]);
lista1.add(miArray1[i]);
}//fin del for
System.out.print("");
//int contador = 0;
for(Integer miObjeto:lista1){
System.out.println("lista1.get(" + /*(contador+1)*/ + lista1.indexOf(miObjeto) + "):"
+ miObjeto
);
//contador++;
}//fin del for mejorado
}
}
Como verán, en principio lo resolví de una manera, y después buscando en estos foros encontre que alguien lo habia resulto un poquito diferente, en el for mejorado que utilizaba para mostrar el contenido del ArrayList utilizo el metodo "indexOf" para obtener la posición del elemento mostrado. Lo cual me pareció genial y me fui a ver la librería de java y lo utilicé.
Es bueno encontrar soluciones distintas en este foro, Saludos
-
Hola y bienvenido.
En programación, hasta el ejercicio más simple puede tener más de una forma de solucionarse.
Por cierto, ¿la respuesta a estas preguntas? ::)
¿Qué tipo de datos almacena el array? ¿Qué tipo de datos almacena el ArrayList?
Aunque no lo parezca, tiene su importancia tener claras las respuestas a estas preguntas.
-
Buenas tardes!! Como estas? Muchas gracias por tu respuesta, por las lecciones anteriores a esta. Aprendí que el array almacena datos de tipo primitivo, y los ArrayList almacenan tipos de referencia. Como ser int para los arreglos e Integer para el ArrayList. Espero haber contestado bien jeje
-
Más o menos.
Digamos que hay dos tipos de datos:
- los primitivos, que son muy básicos, ya que la única información que contienen es su propio valor.
Estos datos, en Java, son: byte, int, float, double, char(en realidad es un int) y boolean.
- Los objetos de clase, son mucho más avanzados. No solo contienen su propio valor, de hecho, pueden contener muchos valores distintos al mismo tiempo, pero además incorporan funcionalidades a través de sus "métodos".
Un objeto de clase, es prácticamente un programa autónomo, que podemos diseñar para que sea todo lo sencillo, o todo lo complejo que queramos.
Este tipo de dato "nació" cuando se desarrolló la POO(Programación Orientada a Objetos)
Los array(o arreglos, o vectores, o como queramos llamarlos...), en este ejercicio, almacena el tipo primitivo int.
Sin embargo, también pueden almacenar objetos de clase, podría hacerse un array de Integer.
Los ArrayList, así como el resto de colecciones de Java (los List, los Map,...) solo pueden trabajar con objetos de clase, no aceptan tipos primitivos.
Bueno, en realidad si los aceptan, lo que pasa es que los transforman en objetos sin que nosotros lo veamos.
Por ejemplo, en esta línea:
lista1.add(miArray1[i]);
Al ArrayList lista1, que es de hecho un objeto de clase ArrayList, le estamos pasando un valor int primitivo (porque es lo que lo tiene el array) a través de su método add().
Este método, coge el int primitivo, y sin que lo veamos, construye a partir de él un objeto Integer para poder almacenarlo en el ArrayList.
Eso no ocurre por arte de magia, alguien escribió el código del método add() para que haga ese proceso y así la clase ArrayList es capaz de aceptar ints primitivos, transformándolos automáticamente en objetos Integer.
Eso es lo maravilloso de la POO, cada objeto es como un programa individual que contiene y ejecuta sus propios algoritmos de forma ajena al programa principal.
Un saludo.
-
Wau, maravillosa explicación. Muchisimas gracias, me re sirve!
Ya estoy en la lección 75 del curso y es la primera que intervengo en el foro, me arrepiento de no haberlo hecho antes. Gracias y saludos!!
Trataré de intervenir en el foro ayudando en cuanto pueda