ALGORITMOS Y ESTRUCTURAS DE DATOS - IPLACEXcursos.iplacex.cl › CED › AED3008 › S3 ›...

19
[Escribir texto] ALGORITMOS Y ESTRUCTURAS DE DATOS UNIDAD Nº II Estructuras Dinámicas De Almacenamiento De Datos: Arraylist

Transcript of ALGORITMOS Y ESTRUCTURAS DE DATOS - IPLACEXcursos.iplacex.cl › CED › AED3008 › S3 ›...

  • [Escribir texto]

    ALGORITMOS Y ESTRUCTURAS DE DATOS

    UNIDAD Nº II

    Estructuras Dinámicas De Almacenamiento De Datos: Arraylist

  • 2

    www.iplacex.cl

    INTRODUCCIÓN

    Una vez que conociste los arreglos, profundizaremos ahora en una estructura

    similar pero bastante más flexible: Los ArrayList.

    Si bien los arreglos, nos resuelven muchos problemas, principalmente el de

    manejar grandes volúmenes de datos, tienen algunas falencias.

    Cuando desconocemos la cantidad de datos que deberá manejar nuestro arreglo,

    es cuando el uso de arreglos se complica.

    Imaginemos que vamos a registrar las notas de un curso. La cantidad de alumnos,

    en ese caso, es un dato conocido. El uso de un arreglo, sería lo adecuado. Pero

    supongamos que lanzaremos una encuesta por redes sociales. No sabemos

    cuánta gente la contestará… ¿y si se viraliza? ¿Si esperábamos unos 100

    encuestados y terminamos teniendo 1000? ¿Cómo sabríamos, a priori, de qué

    tamaño crear el arreglo?

    ¿O al revés, si esperamos miles de datos y sólo recibimos unas pocas decenas?

    Crearíamos un arreglo de un tamaño enorme que finalmente no se utilizaría y

    terminaríamos malgastando recursos tanto de memoria como CPU innecesarios.

    Tal vez para los programas que realizamos como ejercicios en esta asignatura

    pudiera ser irrelevante, pero una aplicación real, en un entorno productivo

    concreto, eso sería una gran desastre.

    Para ahorrarse todos estos problemas es que existen los ArrayList, estructuras de

    datos parecidas a u arreglo, pero con comportamiento dinámico.

    SEMANA 3

  • 3

    www.iplacex.cl

    IDEAS FUERZA

    • Ventajas y desventajas de los arreglos: La principal característica de un

    arreglo es la de poder guardar muchos valores. Esto representa la principal

    ventaja de los arreglos por sobre las variables.

    • Ventajas y desventajas de los ArrayList: Los ArrayList, dada su

    flexibilidad, son muy ventajosos para su uso.

    • Características de los ArrayList: Es una estructura de datos semejante a

    un arreglo. Posee un tamaño dinámico. Vale decir, ascenderá en

    correspondencia con la cuantía de datos que se le integren y reducirá de

    dimensión cuando se le excluyan datos.

  • 4

    www.iplacex.cl

    Desarrollo

    Ventajas y desventajas de los arreglos

    En las semanas anteriores trabajaste con arreglos y conociste su sintaxis. De lo

    aprendido se puede deducir que la principal característica de un arreglo es la de

    poder guardar muchos valores. Esto representa la principal ventaja de los arreglos

    por sobre las variables.

    En relación a la cantidad de valores o elementos que se pueden guardar en un

    arreglo, esta debe ser predefinida y esa es tal vez la principal desventaja de los

    arreglos, que su tamaño es estático.

    Se debe evaluar siempre muy bien el problema a resolver para decidir si el uso de

    arreglos es una solución óptima o si significará un problema.

    Ventajas y desventajas de los ArrayList

    Comparativamente con los arreglos, los ArrayList parecen ser una mejor solución

    dada su flexibilidad, esa sería su principal ventaja.

    Pero no todos los problemas requieren una misma solución, veamos a

    continuación la explicación detallada de los ArrayList para que puedas sacar tus

    propias conclusiones respecto de cuál es mejor.

    Características de los ArrayList

  • 5

    www.iplacex.cl

    Un ArrayList es una estructura de datos muy parecida a un arreglo. Se diferencia

    de éste principalmente por tener un tamaño dinámico. Esto significa que crecerá

    en relación con la cantidad de datos que se le ingresen y disminuirá de tamaño

    cuando se le eliminen datos.

    Su sintaxis es similar a los arreglos, pero con particularidades. A continuación se

    explicará el uso de los ArrayList.

    ¿Qué es un ArrayList?

    Un ArrayList es una estructura dinámica de almacenamiento de datos.

    • Cada ArrayList se identifica con un nombre.

    • Cada casilla del ArrayList se identifica con un índice que comienza en cero.

    Diferencia entre Arreglo y ArrayList

    La principal diferencia entre Arreglo y ArrayList, es que el Arreglo es una

    estructura estática, mientras que el ArrayList es una estructura dinámica.

    ⚫ Arreglo -> Estructura estática: su tamaño se define al crearlo, y se

    mantiene fijo durante la ejecución.

    ⚫ ArrayList -> Estructura dinámica: no es necesario declararles un tamaño

    fijo, pues las casillas se adaptan.

    La ventaja del ArrayList es que se pueden crear casillas dinámicamente en tiempo

    de ejecución.

  • 6

    www.iplacex.cl

    Cómo acceder a las casillas

    Para acceder a cada casilla del ArrayList se coloca el nombre del ArrayList y el

    método get. Cada casilla se puede leer o modificar, y es posible realizar

    operaciones con los valores que se van obteniendo de las casillas.

    Casillas y valor correspondiente:

    • A.get(0) = 2

    • A.get(1) = 4

    • A.get(2) = 6

    • A.get(3) = 8

    • A.get(4) = 10

    Tipos de ArrayList

    Un ArrayList es una estructura que puede

    tener elementos de distintos tipos de datos.

    También se puede establecer un tipo único de

    datos en la estructura ArrayList.

    Por qué usar ArrayList

  • 7

    www.iplacex.cl

    • Permite guardar en memoria datos ingresados por el usuario que necesiten

    ser procesados en forma dinámica.

    • Se puede trabajar con varios ArrayList simultáneamente para resolver

    requerimientos

    • Se pueden crear ArrayList de objetos.

    Principales operaciones con ArrayList

    Las principales operaciones que se pueden realizarse con ArrayList son:

    1.- Agregar elementos al ArrayList

    2.- Eliminar elementos del ArrayList

    3.- Buscar elementos en el ArrayList

    4.- Recorrer el ArrayList

    También pueden implementarse operaciones personalizadas y algunas que vienen

    por defecto.

    1.- Agregar elemento al ArrayList

    La operación agregar elemento inserta un dato en el ArrayList seleccionado.

    También se puede sobrescribir el valor de una casilla específica utilizando su

    índice.

  • 8

    www.iplacex.cl

    2.-Eliminar elemento del ArrayList

    La operación eliminar elemento borra una casilla del ArrayList seleccionado.

    3. Buscar elemento en el ArrayList

    La operación buscar elemento permite

    buscar dentro del ArrayList un

    elemento especifico. Para implementar

    la búsqueda se debe utilizar un ciclo y

    un condicional.

    En caso de no encontrar el elemento buscado se debe personalizar algún mensaje

    que lo indique.

  • 9

    www.iplacex.cl

    4. Recorrer ArrayList

    La operación de recorrer ArrayList permite

    obtener todos los valores de las casillas del

    ArrayList. Al recorrer se pueden aplicar

    condicionales para procesar los valores, lo

    que además permite llenar el ArrayList y

    mostrar sus elementos.

    Definición de ArrayList en Java

    En este ejemplo definiremos un ArrayList llamado ventas.

    Antes de trabajar con ArrayList es necesario importar la librería que permitirá

    trabajar con sus métodos

    Para luego poder definirlo e inicializarlo. Utilizando la sintaxis de la imagen,

    permite almacenar elementos de cualquier tipo de datos.

  • 10

    www.iplacex.cl

    Llenar ArrayList

    Para poder interactuar con el usuario, se agrega el import de Scanner.

    Se crea un objeto read para poder capturar datos desde la consola.

    El ciclo que recorre el ArrayList se define desde i=0 hasta i

  • 11

    www.iplacex.cl

    Recorrer ArrayList e Imprimir Elementos

    Nótese que el ciclo que recorre el ArrayList se define desde i=0 hasta i

  • 12

    www.iplacex.cl

    En este caso se elimina el contenido de la cuarta casilla, recuerde que la primera

    casilla tiene índice cero.

    Buscar elementos en el ArrayList

    Para buscar elementos en el ArrayList, definiremos el siguiente método:

    Se guarda en la variable monto el valor de búsqueda ingresado por el usuario.

    Definimos la variable encontrado seteándola en false; en el caso de que se

    encuentre el monto, se cambiará su valor a true.

  • 13

    www.iplacex.cl

    Se realiza un ciclo for que permite recorrer el ArrayList completo y comparar cada

    uno de sus elementos con la variable monto, ingresado.

    Antes de comparar el elemento del ArrayList, se debe castear a String y luego a

    Double, ya que el método get del arraylist siempre retorna un object por defecto.

    En el caso de que la variable "encontrado" se mantenga en false, se imprime el

    mensaje de que el monto no fue ingresado. En caso de que cambie a true durante

    el ciclo, no entra a este condicional.

    El símbolo ! dentro del if significa que se está negando la variable encontrado, es

    una abreviación para no escribir if (encontrado == false).

  • 14

    www.iplacex.cl

    Creación de un Proyecto

    Para ilustrar el uso de ArrayList realizaremos una aplicación que registre los

    montos de ventas de una tienda en un período de 12 meses. Se calcularán totales

    netos, total IVA y total bruto.

    Crearemos un nuevo proyecto en NetBeans, utilizando el lenguaje Java para la

    implementación del código.

    En el menú de NetBeans, haz clic en File → New Project. En la ventana New

    Project se selecciona Java en Categories, y en Projects la opción Java

    Application. Luego haz clic en Next.

    En la siguiente ventana le damos el nombre EjemploArray al proyecto y

    establecemos la ruta donde se guardará.

  • 15

    www.iplacex.cl

    Creación del ArrayList de Ventas.

    Para crear nuestro ArrayList de ventas, primero importamos las clases ArrayList y

    Scanner a nuestro proyecto. Luego, al interior de la clase Main, declaramos un

    objeto del tipo Scanner que permita al usuario interactuar por consola, y definimos

    el ArrayList

    de ventas.

    Ingresar elementos al ArrayList

    Programamos el ciclo que permite llenar el ArrayList de ventas desde la consola:

    Nótese que en un ciclo de i=0 a i=11, el índice representa los periodos. Un año

    tiene 12 periodos que básicamente son los meses del año numerados.

  • 16

    www.iplacex.cl

    Listar elementos del ArrayList

    Programamos el ciclo que permite listar el ArrayList de ventas en la consola:

    Calcular Total Neto

    Programamos el ciclo que permite calcular el total neto de las ventas:

    Se utiliza un ciclo que recorre todo el ArrayList y que suma sus valores y los

    almacena en la variable totalNeto. Una vez finalizado el ciclo, se imprime el

    resultado de la suma.

    Calcular Total IVA

    Programamos el ciclo que permite calcular el total iva de las ventas:

  • 17

    www.iplacex.cl

    Se utiliza un ciclo que recorre todo el ArrayList y que suma sus valores

    multiplicando por 0,19 (IVA 19%) y los almacena en la variable totaIVA. Una vez

    finalizado el ciclo se imprime el resultado de la suma.

    Calcular Total Bruto

    Programamos el ciclo que permite calcular el total bruto de las ventas:

    Se utiliza un ciclo que recorre todo el ArrayList y que suma sus valores

    multiplicando por 1,19 (Total bruto = total neto + total iva) y los almacena en la

    variable total Bruto. Una vez finalizado el ciclo se imprime el resultado de la suma.

  • 18

    www.iplacex.cl

    CONCLUSIONES

    De lo aprendido esta semana podemos concluir que el uso de ArrayList presenta

    varias ventajas respecto del uso de los arreglos.

    La principal ventaja guarda relación con la flexibilidad que presenta esta estructura

    de datos, ya que no es necesario conocer por anticipado el volumen de datos que

    se guardarán en él. El ArrayList se agranda y achica en la medida que se le

    agreguen o quiten datos.

    Otra ventaja, es la facilidad de su uso, ya que tiene predefinidas una serie de

    funcionalidades. Existen predefinidos los métodos para agregar elementos,

    eliminar, buscar, etc.

    Finalmente, es importante tener en cuenta, que el principal tipo de problemas para

    el que los ArrayList resultan ser eficientes, es para los problemas con volúmenes

    indeterminados de datos.

  • 19

    www.iplacex.cl