Arraylist

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 12

Instituto Tecnológico de Las Américas

Investiga y aprende sobre el uso de los ArrayList en los lenguajes de programación Java y C#.

Asignatura:
Programación I

Docente:
Luis Soto

Alumno:
Luz Cristina Severino Romero – 2024-0265

Período:
2024-C-3

25 de noviembre del 2024


Santo Domingo Norte, Republica Dominicana
Investiga y aprende sobre el uso de los ArrayList en los lenguajes de programación Java y C#. A
continuación, realiza las siguientes actividades:
1. Concepto y características:
o Define qué es un ArrayList y cuáles son sus principales características en Java y C#.
o Explica las diferencias entre un ArrayList y un array tradicional en ambos lenguajes.
2. Sintaxis y ejemplos:
o Escribe ejemplos básicos que demuestren cómo declarar, inicializar, y manipular un
ArrayList en Java y en C#.
o Incluye operaciones como agregar elementos, eliminar elementos, buscar elementos y
recorrer el ArrayList utilizando bucles.
3. Ventajas y desventajas:
o Analiza las ventajas y desventajas de usar un ArrayList frente a otras colecciones
disponibles en cada lenguaje.
4. Casos prácticos:
o Propón un caso práctico en el que el uso de un ArrayList sea la solución más adecuada en
cada lenguaje.
Java
La clase ArrayList en Java, es una clase que permite almacenar datos en memoria de forma similar a los
Arrays, con la ventaja de que el número de elementos que almacena, lo hace de forma dinámica, es decir,
que no es necesario declarar su tamaño como pasa con los Arrays.

Las diferencias entre un ArrayList y un Array tradicional.


1. Tamaño
Array tradicional: Tiene un tamaño fijo, definido en el momento de su creación. No se puede cambiar el
tamaño después de la creación.
ArrayList: Tiene un tamaño dinámico, lo que significa que puede crecer o reducirse automáticamente al
agregar o eliminar elementos.
2. Capacidad de manejo
Array tradicional: Solo puede contener elementos de tipos primitivos o referencias a objetos. No
proporciona métodos para manipular su contenido (como agregar o eliminar elementos).
ArrayList: Solo puede contener objetos (no tipos primitivos directamente). Sin embargo, se puede usar
autoboxing para almacenar valores primitivos (como int se convierte a Integer). Proporciona métodos como
add(), remove(), y contains() para manipular fácilmente el contenido.
3. Eficiencia
Array tradicional: Es más eficiente en términos de uso de memoria y velocidad, ya que no tiene la
sobrecarga asociada con los métodos y funcionalidades de una clase.
ArrayList: Consume más memoria debido a la necesidad de manejar la capacidad dinámica y almacenar
metadatos adicionales.
4. Flexibilidad
Array tradicional: Requiere que el tamaño sea conocido y fijo al inicio, lo que puede ser un inconveniente
si el número de elementos varía durante la ejecución.
ArrayList: Es más flexible al ajustarse automáticamente según la cantidad de elementos.
5. Compatibilidad con la API de Java
Array tradicional: No implementa ninguna interfaz de la colección en Java. Por lo tanto, no es
compatible directamente con las APIs de la colección, como Collections o Streams.
ArrayList: Implementa la interfaz List, lo que permite usar métodos avanzados para manipular,
ordenar y buscar elementos.
6. Inicialización
Array tradicional: Se puede inicializar directamente con valores literales.
ArrayList: Requiere el uso de métodos como add() para inicializar elementos, o usar una inicialización en
bloque.
C#
Un ArrayList en C# es como una lista especial en la que puedes guardar cosas, como números, letras o
incluso objetos. Imagina que tienes una caja de lápices y quieres guardarlos todos juntos en un lugar. Un
ArrayList es como esa caja, pero en el mundo de la programación.
Lo que hace que los ArrayList sean diferentes de los arrays normales es que puedes cambiar su tamaño
fácilmente. Si necesitas agregar más cosas a la caja de lápices, no tienes que conseguir una caja nueva. Con
un ArrayList, puedes hacer que la caja sea más grande o pequeña según lo necesites.

Las diferencias entre un ArrayList y un Array tradicional.

• Cambiar de tamaño: Los ArrayList pueden cambiar de tamaño fácilmente, mientras que los arrays
normales no pueden.
• Guardar cosas diferentes: En un ArrayList, puedes guardar cosas de diferentes tipos, como
números y letras juntos. En un array normal, solo puedes guardar cosas del mismo tipo.
• Hacer cosas con ellos: Con un ArrayList, puedes hacer muchas cosas útiles, como agregar cosas
al final, quitar cosas en el medio y buscar información. Algunas de estas cosas son más difíciles de
hacer con un array normal.
Entonces, si necesitas una forma flexible de guardar y organizar información en tu programa de C#, un
ArrayList puede ser una excelente opción. En las próximas secciones, aprenderemos cómo usarlos y cómo
realizar diferentes tareas con ellos.

Escribe ejemplos básicos que demuestren cómo declarar, inicializar, y manipular un ArrayList.
Java

En el siguiente fragmento de código, declaramos un ArrayList de Strings y lo rellenamos con 10 Strings


(Elemento i). Esto lo hacemos con el método "add()". Después añadimos un nuevo elemento al ArrayList
en la posición '2' (con el metodo "add(posición,elemento)") que le llamaremos "Elemento 3" y
posteriormente imprimiremos el contenido del ArrayList, recorriendolo con un Iterador.
C#

En este ejemplo, estamos creando un ArrayList llamado paises con cinco elementos, que son los nombres
de algunos países europeos. Luego, utilizamos un bucle foreach para recorrer el ArrayList y mostrar cada
uno de los nombres de los países en la consola.
Incluye operaciones como agregar elementos, eliminar elementos, buscar elementos y recorrer el ArrayList
utilizando bucles.
Java
Salida
C#
Salida
Analiza las ventajas y desventajas de usar un ArrayList frente a otras colecciones disponibles en cada
lenguaje.
Java

Ventajas de usar ArrayList:


1. Acceso rápido por índice:
El acceso a elementos es muy rápido (O(1)) debido a que internamente utiliza un array. Ideal cuando
necesitas leer elementos frecuentemente.
2. Tamaño dinámico:
A diferencia de un array tradicional, el tamaño de un ArrayList crece o se reduce automáticamente según
se agreguen o eliminen elementos.
3. Fácil de usar:
La API de ArrayList incluye métodos como add(), remove(), contains(), y indexOf(), lo que simplifica la
manipulación de datos.
4. Iteración sencilla:
Compatible con bucles for, for-each, e incluso Streams para realizar operaciones avanzadas.
5. Sincronización opcional:
Si necesitas un ArrayList seguro para hilos, puedes envolverlo con Collections.synchronizedList().

Desventajas de usar ArrayList:


1. Costoso para insertar o eliminar en el medio:
Las operaciones de inserción o eliminación en posiciones intermedias tienen una complejidad de O(n)
debido al desplazamiento de elementos.
2. No es seguro para hilos (Thread-safe):
Por defecto, no es sincronizado. Si varias hebras lo manipulan simultáneamente, se pueden producir errores.
3. Mayor consumo de memoria:
Como reserva más espacio del necesario para permitir el crecimiento dinámico, puede consumir más
memoria que otras colecciones como LinkedList.
Comparación con otras colecciones:
LinkedList:
Mejor para insertar y eliminar elementos en cualquier posición (O(1) en extremos, O(n) en búsqueda), pero
más lento en acceso por índice.
Vector:
Similar a ArrayList, pero sincronizado por defecto. Es menos eficiente en entornos donde no se necesita
sincronización.
HashSet:
Excelente para evitar duplicados y búsquedas rápidas (O(1)), pero no conserva el orden de inserción.

C#
Ventajas:
1. Genérico y tipo seguro:
No requiere conversiones de tipo, lo que reduce errores y mejora el rendimiento.
2. Acceso rápido por índice:
Permite acceder a elementos con una complejidad de O(1), igual que en Java.
3. Tamaño dinámico:
Al igual que en Java, ajusta su tamaño automáticamente al agregar o eliminar elementos.
4. API rico en funcionalidades:
Ofrece métodos como AddRange(), RemoveAll(), y soporte para LINQ, lo que permite realizar operaciones
avanzadas como filtrado y ordenación fácilmente.
5. Fácil integración con otras colecciones:
Puedes convertir un List a un array o interactuar con otras estructuras fácilmente.

Desventajas:
1. Inserciones y eliminaciones costosas en el medio:
Similar a Java, estas operaciones tienen un costo de O(n) debido al reordenamiento de elementos.
2. No es Thread-safe:
Si necesitas trabajar en un entorno de múltiples hilos, necesitarás sincronización manual o usar alternativas
como ConcurrentQueue.
3. Consumo de memoria adicional:
Para soportar el crecimiento dinámico, se reserva más espacio del necesario, lo que puede ser ineficiente
en colecciones pequeñas.

Comparación con otras colecciones:


LinkedList<T>:
Más eficiente en inserciones y eliminaciones, pero más lento en acceso por índice.
Dictionary<TKey, TValue>:
Útil para pares clave-valor, pero no conserva el orden.
HashSet<T>:
Ideal para almacenar elementos únicos, pero no permite duplicados ni acceso por índice.

Caso practico

Una aplicación para gestionar oficios pendientes del hogar. Los usuarios pueden agregar nuevos oficios,
marcarlos como completados (eliminándolas de la lista) y listar los oficios actuales.
Los oficios deben mantenerse en un orden específico (orden de inserción).
El tamaño de la lista es dinámico y cambiará constantemente al agregar o eliminar tareas.

También podría gustarte