INTERFACE LIST DEL API JAVA. CLASES ARRAYLIST, LINKEDLIST, STACK, VECTOR. EJEMPLO CON ARRAYLIST. (CU00920C)

Documentos relacionados
INTERFACE ITERATOR DEL API JAVA. MÉTODO REMOVE PARA BORRAR OBJETOS EN COLECCIONES. EJERCICIOS Y EJEMPLO RESUELTO. (CU00919C)

LA CLASE VECTOR DEL API JAVA. MÉTODOS TRIMTOSIZE Y ENSURECAPACITY EJEMPLO Y EJERCICIOS RESUELTOS. (CU00922C)

INTERFACE COMPARATOR. DIFERENCIAS ENTRE COMPARATOR Y COMPARABLE. CLASE COLLECTIONS. EJERCICIOS RESUELTOS. (CU00918C)

EL PAQUETE JAVA.UTIL DEL API JAVA. PRINCIPALES INTERFACES Y CLASES: STRINGTOKENIZER, DATE, CALENDAR, HASHSET, TREEMAP, TREESET...

LA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C)

Algoritmos y Estructuras de Datos Iteradores. Guillermo Román Díez

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Ejercicio 1 (proyecto prlistas, paquete listas)

INTERFACES SET Y SORTEDSET DEL API DE JAVA. CLASES HASHSET Y TREESET. EJEMPLO. DIFERENCIAS ENTRE ELLAS. (CU00921C)

Patrones de Diseño. Patrón de comportamiento Iterator. Técnicas de Programación - Curso 2007/08

AGRUPA P R OBJET E OS 1

REPASO ARRAYS O ARREGLOS UNIDIMENSIONALES EN JAVA. EJEMPLOS DE CÓDIGO. (CU00903C)

Tema 4 Colecciones en Java. Programación Orientada a Objetos Curso 2013/2014

// Método Comunicarse, sera implementado por las clases concretas que hereden de la clase //animal

PARA QUÉ SIRVEN LAS INTERFACES JAVA. IMPLEMENTAR UNA INTERFAZ DEL API. VENTAJAS. EJEMPLOS BÁSICOS. (CU00697B)

EJEMPLO EJERCICIO RESUELTO CON POLIMORFISMO, SOBREESCRITURA DE MÉTODOS Y HERENCIA JAVA. CÓDIGO (CU00691B)

ArrayList en Java. Los principales métodos para trabajar con los ArrayList son los siguientes:

Taller de Programación I. Tema 08: Estructuras Dinámicas de Datos en Java

Examen Teórico Convocatoria de Junio de 2012

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

Bloque II. Elementos del lenguaje de programación Java

IMPORTAR Y USAR CLASES DEL API DE JAVA. EJEMPLO CLASE MATH Y MÉTODO POW. CONSTRUCTORES PRIVADOS. (CU00647B)

Computación Geométrica Colecciones en Java

INICIACIÓN A LA PROGRAMACIÓN LENGUAJE JAVA con BlueJ

Interfaces. Amparo López Gaona. Septiembre de Amparo López Gaona () Interfaces Septiembre de / 1

INDICE DEL CURSO APRENDER PROGRAMACIÓN JAVA DESDE CERO. PROGRAMACIÓN ORIENTADA A OBJETOS (CU00601B)

Objetivos. Índice. 1. Paquetes

Ejercicio 4. EJB Sesión - Sistema SGA. Java EE. Ejercicio 4. EJB Sesión Sistema SGA. Curso de Java EE

Tema 6 Patrones de Diseño. Programación Orientada a Objetos Curso 2010/2011

Tema 3. Tipos List y Set

Fundamentos de Informática

Programación de sistemas Listas enlazadas

Lenguajes de Programación Curso Práctica 4. Herencia. Utilización de interfaces y clases abstractas. 1. Interfaces Clases abstractas 2

CONCEPTO DE INTERFACE Y HERENCIA MÚLTIPLE EN JAVA. IMPLEMENTS. EJEMPLOS Y DIAGRAMAS DE CLASES. (CU00696B)

PROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación:

Programación Orientada a Objetos Curso 2014/2015. Práctica 11

Estructuras de control selectivas

CAPITULO 4. AGRUPAR OBJETOS

Colecciones. Nadjet Bouayad-Agha Programación 2007

PROGRAMACION ORIENTADA A OBJETOS Ingenieria Informática Final Febrero 2006/07

U9 API Collections y Generics

PROGRAMACIÓN ORIENTADA A OBJETOS

QUÉ ES UNA CLASE JAVA? ATRIBUTOS (PROPIEDADES O CAMPOS), CONSTRUCTOR Y MÉTODOS. (CU00623B)

Práctica No. 5. Estructuras con Memoria Dinámica

Unidad Nº V Listas Enlazadas

Colecciones de Java LSUB. 17 de febrero de 2016 GSYC

Derechos de Acceso: COMPOSICION

PROGRAMACIÓN ORIENTADA A OBJETOS PROGRAMACIÓN ORIENTADA A OBJETOS. [W1H3] Array de elementos atomicos. [W3H2] Array de objetos

Unidad Didáctica 6. Tipos List y Set con tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos. Versión 1.0.

CURSO : ESTRUCTURA DE DATOS DOCENTE : ING. JUAN ZEVALLOS VALLE

Estructura de datos y Programación

Federico Peinado

LA PALABRA CLAVE THIS EN JAVA. CONTENIDO NULL POR DEFECTO DE UN OBJETO. SOBRECARGA DE NOMBRES. EJEMPLOS (CU00654B)

CÓMO CREAR CONSTRUCTORES E INICIALIZAR OBJETOS EN JAVA. EJERCICIO EJEMPLO RESUELTO. (CU00639B)

PROGRAMACIÓN GENÉRICA

Agenda. Guía en 5 pasos para el diseño orientado a objetos

Ejecución de hebras. En realidad, todas las aplicaciones escritas en Java son aplicaciones multihebra (recuerde el recolector de basura).

UML. Diagramas de clases (para diseño)

Interface nominterface{

FACULTAD DE ECONOMIA Y ADMINISTRACION DEPARTAMENTO DE CIENCIAS DE LA COMPUTACION CÁTEDRA PROGRAMACION GENERAL. Trabajo Práctico Nº 4

Programación Concurrente y Distribuida Ingeniería Informática Facultad de Ciencias Universidad de Cantabria.

Arrays. Los arreglos son una colección de objetos del mismo tipo los cuales tienen un nombre en común y su acceso es mediante un índice.

1.2. Es Java un lenguaje ideal para aprender a programar? 1.4. Cuáles son las versiones y distribuciones Java y cuál usar?

Definición de framework. Razonamiento Geométrico. El framework de colecciones de Java 1.2. Ejemplos de frameworks. Qué se define en un framework?

ÍNDICE DEL LIBRO Y DEL EBOOK APRENDER A PROGRAMAR EN JAVA DESDE CERO. CURSO PASO A PASO.

k. Son métodos de la clases y respectivamente, que analiza un para devolver un entero con

Threads o Hilos. Un thread en JAVA comienza como una instancia de java.lang.thread antes de convertirse en un hilo de ejecución.

REPASO ARRAYS MULTIDIMENSIONALES EN JAVA. DECLARACIÓN Y USO. EJEMPLOS Y EJERCICIOS RESUELTOS. (CU00905C)

class Nombre_Clase extends Nombre_SuperClase { cuerpo de la clase extendida }

Programación orientada a objetos

Examen de Métodos de Programación Ingeniería Informática Primera Parte

Soluciones Ejercicios Tema 1

Programación Avanzada CONCEPTOS BÁSICOS DE IMPLEMENTACIÓN EN C++

Tipos abstractos de datos (TAD)

Sacándole Partido a JUnit Módulo 1. Introducción a las Pruebas

Práctica 5. Fecha límite de entrega: viernes, 14 de diciembre

CLASE DATE DEL API JAVA. MÉTODOS BEFORE, AFTER, TOLOCALESTRING, TOGMTSTRING Y GETTIME. EJEMPLOS. (CU00924C)

Inteligencia Artificial, Práctica 1. Felix Marquardt & Daniel Clemente 08 nov 05 19:54 Trabajo.java

DOCUMENTAR PROYECTOS JAVA CON JAVADOC. COMENTARIOS, SÍMBOLOS, TAGS (DEPRECATED, PARAM, RETURN, ETC.) (CU00680B)

HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA

CAPÍTULO 6 COMPOSICIÓN Y AGREGACIÓN

Fundamentos de la Programación Orientada a Objetos Agrupación de objetos. Colecciones e iteradores

Manejo de Punteros y objetos en memoria dinámica en C++ Agustín J. González ELO 329

Tema: Funciones Virtuales y Polimorfismo.

Tema: Funciones Virtuales y Polimorfismo.

Programación Orientada a Objetos Curso 2015/2016. Ejercicios sobre colecciones y Java 8

! Qué es la POO?! Un paradigma de programación. ! No hay paradigmas mejores ni peores! Todos tienen sus ventajas e inconvenientes

Tema 7.- Fundamentos de la Programación Orientada a Objetos

Arquitecturas cliente/servidor

Ingeniería del Software Separación entre Presentación y Lógica del Negocio

TECNICAS DE PROGRAMACION Universidad Católica Los Angeles de Chimbote METODOS CONSTRUCTORES Y LA REFERENCIA THIS

Conceptos a tratar. Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos

MATRICES, ARREGLOS O ARRAYS DE ELEMENTOS GRÁFICOS EN JAVA. EJEMPLO CON JLABEL Y JTEXTFIELD. (CU00930C)

USO DE LOS OBJETOS JLABEL, JTEXTFIELD Y JBUTTON

Más sobre los objetos (creación de clases propias) Nadjet Bouayad-Agha Programación

PROGRAMACIÓN ORIENTADA A OBJETOS

Introducción a la Programación

CLASES QUE UTILIZAN OBJETOS. RELACIÓN DE USO ENTRE CLASES JAVA. CONCEPTO DE DIAGRAMA DE CLASES. (CU00641B)

Clase adicional 9. Listas enlazadas. Temas. Listas enlazadas Árboles Problemas de la clase adicional Ejercicios de diseño

Examen de Programación II (Ingeniería Informática)

Transcripción:

APRENDERAPROGRAMAR.COM INTERFACE LIST DEL API JAVA. CLASES ARRAYLIST, LINKEDLIST, STACK, VECTOR. EJEMPLO CON ARRAYLIST. (CU00920C) Sección: Cursos Categoría: Lenguaje de programación Java nivel avanzado I Fecha revisión: 2039 Resumen: Entrega nº20 curso Lenguaje de programación Java Nivel Avanzado I. Autor: Manuel Sierra y José Luis Cuenca

INTERFACE LIST La interface List la hemos venido utilizando aunque quizás sin ser plenamente conscientes de ello. Esta interface es la encargada de agrupar una colección de elementos en forma de lista, es decir, uno detrás de otro. En una lista los elementos pueden ser accedidos por un índice que indica la posición del elemento en la colección. LIST Esta interfaz también conocida como secuencia normalmente acepta elementos repetidos o duplicados, y al igual que los arrays es lo que se llama basada en 0. Esto quiere decir que el primer elemento no es el que está en la posición 1, sino en la posición 0. Esta interfaz proporciona debido a su uso un iterador especial (la interfaz Iterator e Iterable las hemos podido conocer en anteriores entregas) llamada ListIterator. Este iterador permite además de los métodos definidos por cualquier iterador (recordemos que estos métodos son hasnext, next y remove) métodos para inserción de elementos y reemplazo, acceso bidireccional para recorrer la lista y un método proporcionado para obtener un iterador empezando en una posición específica de la lista. Debido a la gran variedad y tipo de listas que puede haber con distintas características como permitir que contengan o no elementos null, o que tengan restricciones en los tipos de sus elementos, hay una gran cantidad de clases que implementan esta interfaz. A modo de resumen vamos a mencionar las clases más utilizadas de acuerdo con nuestra experiencia. - ArrayList. - LinkedList. - Stack. - Vector. LA CLASE ARRAYLIST Vamos a hablar brevemente sobre todas las clases anteriores, pero vamos a comenzar por ArrayList que ha sido una de las clases en las que hemos venido trabajando más a menudo por lo que ya conocemos parte de ella. ArrayList como su nombre indica basa la implementación de la lista en un array. Eso sí, un array dinámico en tamaño (es decir, de tamaño variable), pudiendo agrandarse el número de elementos o disminuirse. Implementa todos los métodos de la interfaz List y permite incluir elementos null.

Un beneficio de usar esta implementación de List es que las operaciones de acceso a elementos, capacidad y saber si es vacía o no se realizan de forma eficiente y rápida. Todo arraylist tiene una propiedad de capacidad, aunque cuando se añade un elemento esta capacidad puede incrementarse. Java amplía automáticamente la capacidad de un arraylist a medida que va resultando necesario. A través del código podemos incrementar la capacidad del arraylist antes de que este llegue a llenarse usando el método ensurecapacity. Esta clase no es sincronizada lo que entre otras cosas significa que si hay varios procesos concurrentes (procesos que se ejecutan al mismo tiempo) sobre un objeto de este tipo y en dos de ellos se modifica la estructura del objeto se pueden producir errores. EJERCICIO RESUELTO CON ARRAYLIST Vamos a desarrollar el siguiente ejercicio: a partir de la clase Persona, vamos a crear una lista de Personas donde tengamos un conjunto de Personas con sus alturas correspondientes. A modo de estadística queremos calcular la estatura media de ese conjunto de Personas y veremos lo rápido y eficiente que esto se puede hacer con la implementación de un ArrayList. Escribe ahora el siguiente código con el que vamos a trabajar: /* Ejemplo Interfaz List aprenderaprogramar.com */ public class Persona{ private int idpersona; private String nombre; private int altura; public Persona(int idpersona, String nombre, int altura) { this.idpersona = idpersona; this.nombre = nombre; this.altura = altura; public int getaltura() { return altura; //Omitimos otros métodos get y set para simplificar @Override public String tostring() { return "Persona-> ID: "+idpersona+" Nombre: "+nombre+" Altura: "+altura+"\n"; Para la clase Persona hemos creado una clase simplificada con las propiedades más sencillas posibles, con tan solo un constructor, un get y sobreescrito el método tostring para la visualización.

A continuación definiremos el programa principal de la siguiente manera: /* Ejemplo Interfaz List aprenderaprogramar.com */ import java.util.list; import java.util.arraylist; import java.util.iterator; import java.util.random; public class Programa { public static void main(string arg[]) { List<Persona> lp = new ArrayList<Persona>(); // El tipo es List y lo implementamos con ArrayList Random r = new Random(); Persona temp = null; int sumaaltura = 0; for(int i=0;i<1000;i++) {lp.add(new Persona(i,"Persona"+i,r.nextInt(100)+100)); Iterator<Persona> it = lp.iterator(); while(it.hasnext()) { temp = it.next(); System.out.println(temp); sumaaltura += temp.getaltura(); System.out.println("La media de altura del conjunto de Personas es: "+sumaaltura/lp.size()); En el anterior código hemos creado un ArrayList lp que es nuestro objeto con la lista de Personas. Procedemos con una carga bastante pesada como pueden ser 1.000 objetos de la clase Persona. Una vez cargadas hemos hecho un recorrido sobre esta y hemos calculado finalmente la media de altura de las Personas que se ha generado aleatoriamente entre 100 cm de altura y 200 cm. Con el siguiente diagrama de clases en BlueJ:

Obtenemos la siguiente salida por consola: CONCLUSIONES Vemos cómo la implementación de ArrayList para la interface List es rápida y eficiente (aunque como comentamos no segura en sincronización) y posiblemente por ello sea la implementación más usada de List. En tan solo unos segundos o incluso menos calculamos la media de miles de personas. EJERCICIO Crea una clase denominada Cuadrupedo con los atributos idcuadrupedo (int) y tipo (String), donde tipo podrá tomar los valores León, Gato, Perro o Elefante. Crea una clase con el método main donde se introduzcan 10000 cuadrúpedos en una lista de tipo estático List y tipo dinámico ArrayList. El atributo tipo debe establecerse para cada objeto de forma aleatoria. A continuación, el programa debe mostrar por consola los datos de los objetos con idcuadrupedo múltiplo de 1000 y mostrar un resumen de cuántos cuadrúpedos hay de cada tipo. Ejemplo de ejecución: Cuadrúpedo-> ID: 1000 Tipo: Leon Cuadrúpedo-> ID: 2000 Tipo: Elefante Cuadrúpedo-> ID: 3000 Tipo: Gato

Cuadrúpedo-> ID: 4000 Tipo: Gato Cuadrúpedo-> ID: 5000 Tipo: Perro Cuadrúpedo-> ID: 6000 Tipo: Perro Cuadrúpedo-> ID: 7000 Tipo: Gato Cuadrúpedo-> ID: 8000 Tipo: Gato Cuadrúpedo-> ID: 9000 Tipo: Perro Cuadrúpedo-> ID: 10000 Tipo: Leon Resumen: hay 2470 Leones,2511 Gatos,2575 Perros y 2444 Elefantes Para comprobar si es correcta tu solución puedes consultar en los foros aprenderaprogramar.com. Próxima entrega: CU00921C Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la dirección siguiente: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=58&itemid=180