SlideShare una empresa de Scribd logo
1 de 14
Descargar para leer sin conexión
Renato Urvina
Escuela de Ingenierías
Ingeniería en Sistemas de
Información
Programación Orientada a Objetos
Programación Orientada a Objetos
Programación Orientada a Objetos
Clase 08
Estructuras de Datos y Objetos
Renato Urvina
Programación Orientada a Objetos
Antecedentes
Colecciones de datos
Una problemática que surge frecuentemente en la
programación, es organizar una colección de objetos.
La primera solución que nos surge es utilizar un array
String[] nombres = new String[10];
Surgen aspectos que se presentan en casi todas las
colecciones: ¿cómo gestionar cuando el array se llena?,
¿buscar si un elemento ya existe?, ¿ordenar los
elementos?...Cuando el número de objetos crece en la
colección, la velocidad de respuesta se vuelve un problema
Java tiene un juego de clases e interfaces para guardar
colecciones de objetos, que nos dan soluciones a las
problemáticas planteadas
Renato Urvina
Programación Orientada a Objetos
Antecedentes
Collection e Iterator
La interfaz más importante es Collection<E>. Una Collection es todo
aquello que se puede recorrer (o iterar) y de lo que se puede saber
el tamaño. Muchas otras clases implementaran Collection añadiendo
más funcionalidades.
Las operaciones básicas de una Collection son:
• add(T e). Añade un elemento
• clear(). Borra la colección
• remove(Object obj). Borra un elemento
• isEmpty(). Indica si está vacía
• iterator(). Devuelve un Iterator de la colección, útil para realizar
un recorrido de uno en uno.
• size(). Devuelve el tamaño de la colección
• contains(Object e). Nos indica si el objeto está contenido.
• toArray(...). Devuelve un array con el contenido de la colección
Renato Urvina
Programación Orientada a Objetos
Antecedentes
Collection e Iterator
Tenemos dos formas de recorrer una colección. Una es
con la sentencia for each, esta es una buena opción si
solo queremos realizar operaciones de lectura.
La segunda mediante un iterator, resulta mejor cuando
queramos realizar modificaciones de la colección.
Las operaciones de un Iterator son:
• hasNext(). Devuelve true si existen más elementos
• next(). Devuelve el siguiente elemento
• remove(). Borrar el elemento de la colección
Renato Urvina
Collection<String> lista = new ArrayList<String>();
lista.add("uno");
lista.add("");
lista.add("dos");
for (String item : lista)
System.out.println(item);
Iterator<String> it = lista.iterator();
while (it.hasNext()) {
String s = it.next();
if (s.equals(""))
it.remove();
}
Programación Orientada a Objetos
Antecedentes
Collection e Iterator
Existen un conjunto de interfaces que heredan de
Collection, que nos aportan más prestaciones. Algunos
de ellos son:
• List. Es una colección donde se mantiene la posición
de los elementos. No está ordenada y puede haber
elementos repetidos
• Set. Es una colección en la que no existen elementos
repetidos
• Queue. Es una colección que mantiene una prioridad
de procesamiento
Renato Urvina
Programación Orientada a Objetos
Renato Urvina
Programación Orientada a Objetos
Antecedentes
List.
Es una lista, no ordenada, en que se mantiene el orden de los elementos,
pudiendo acceder a su contenido
según la posición.
Esta lista crece según las necesidades, con lo que nos podemos olvidar
de los tamaños.
Este interface hereda de Collection, y añade los siguientes métodos:
add(int index, E element). Se añade en una posición determinada
get(int index). Se recupera el elemento de una posición
set(int index, E element). Reemplaza el elemento de una posición
Podemos destacar las siguientes implementaciones del interfaz.
La clase LinkedList implementa la lógica para trabajar con listas
genéricas, es decir podemos insertar y extraer elementos de cualquier
parte de la lista.
Renato Urvina
Programación Orientada a Objetos
Antecedentes
List.
ARRAYLIST
Esta implementación mantiene la lista compactada en un
array. Tiene la ventaja de realizar lecturas muy
rápidas. El problema está en borrar elementos
intermedios, ya que tiene que mover el resto del
contenido.
Esta clase no está preparada para trabajar con varios
hilos; para ello tenemos la implementación Vector.
VECTOR
Es muy parecida al anterior, pero con la diferencia de
estar preparada para trabajar con hilos
LINKEDLIST
Esta lista se implementa mediante una lista entrelazada,
formada por nodos que apuntan al elemento
siguiente y el elemento anterior. Esta implementación
favorece las inserciones y el borrado, pero hacen
muy lento el recorrido.
Renato Urvina
public class PruebaList {
public static void main(String[] args) {
List<String> lista = new ArrayList<String>();
lista.add("uno");
lista.add("dos");
lista.add("tres");
lista.add("uno"); // Se permiten elementos repetidos
IO.out.println(lista);
lista.remove("dos");
lista.remove(0);
IO.out.println("size: " + lista.size());
IO.out.println("index: " + lista.indexOf("tres"));
IO.out.println(lista);
} }
Programación Orientada a Objetos
Antecedentes
List.
Ejemplo LinkedList
Hacer una lista ligada con objetos de la clase Alumno.
atributos:
Nombre (String), matrícula (integer) y nota(double)
Insertar al principio de la lista los siguientes elementos:
• Pedro Martínez matricula: 943012 tiene: 9.8
• Eleazar Hernández matricula: 274901 tiene: 8.5
• Obdulia García matricula: 204117 tiene: 7.3
Renato Urvina
public class Alumno {
String nombre;
Double calific;
Integer matricula;
public Alumno( String nom, Double cal, Integer matr )
{
this.nombre = nom;
this.calific = cal;
this.matricula= matr;
}
public String toString() {
return this.nombre
+ " matricula: " + this.matricula + " tiene: " +
this.calific;
}
}
Programación Orientada a Objetos
Antecedentes
List.
Ejemplo LinkedList
Renato Urvina
public class Alumno {
String nombre;
Double calific;
Integer matricula;
public Alumno( String nom, Double cal, Integer
matr ) {
this.nombre = nom;
this.calific = cal;
this.matricula= matr;
}
public String toString() {
return this.nombre
+ " matricula: " + this.matricula + " tiene: "
+ this.calific;
}
}
/*class main */
import java.util.LinkedList;
public class ListasLigadasMain {
public static void main( String[] args ) {
// hacer una lista de Alumnos
LinkedList<Alumno> listaAlumnos = new LinkedList<Alumno>();
Alumno alumno1 = new Alumno( "Pedro Martinez", 9.8, 943012 );
listaAlumnos.addFirst( alumno1 );
Alumno alumno2 = new Alumno( "Eleazar Hernandez", 8.5, 274901);
listaAlumnos.addFirst( alumno2 );
Alumno alumno3 = new Alumno( "Obdulia Garcia", 7.3, 204117 );
listaAlumnos.addFirst( alumno3 );
// desplegar la lista
desplegarLista( listaAlumnos );
}
public static void desplegarLista( LinkedList l ) {
for ( int i = 0; i < l.size(); i++ )
System.out.println( l.get( i ) );
}
}
Programación Orientada a Objetos
Antecedentes
Queue
Esta colección está pensada para organizar una cola (FIFO). Los elementos se añaden
por el final, y se extraen por el principio. Dispone de los siguientes métodos:
• boolean add(E e). Inserta un elemento en la cola, provoca una excepción si no
existe espacio disponible.
• E element(). Recupera sin borrar la cabeza de la cola, si está vacía provoca una
excepción
• boolean offer(E e). Inserta, si puede, un elemento en la cola.
• E peek(). Recupera sin borrar la cabeza de la cola, si está vacía devuelve null
• E poll(). Recupera y borra la cabeza de la cola, o devuelve null si está vacía
• E remove(). Recupera y borra la cabeza de la cola, si está vacía provoca una
excepción
La clase LinkedList también implementa esta interface.
Existe el interface Deque, que implementa una cola doble, útil para realizar LIFO.
LinkedList y ArrayDeque implementan este interface.
Renato Urvina
Programación Orientada a Objetos
Antecedentes
Queue
• boolean add(E e). Inserta un elemento
en la cola, provoca una excepción si no
existe espacio disponible.
• E element(). Recupera sin borrar la
cabeza de la cola, si está vacía provoca
una excepción
• boolean offer(E e). Inserta, si puede, un
elemento en la cola.
• E peek(). Recupera sin borrar la cabeza
de la cola, si está vacía devuelve null
• E poll(). Recupera y borra la cabeza de la
cola, o devuelve null si está vacía
• E remove(). Recupera y borra la cabeza
de la cola, si está vacía provoca una
excepción
Renato Urvina
package test;
import java.util.LinkedList;
import java.util.Queue;
public class Colas {
public static void main(String[] args) {
Queue<Integer> cola = new LinkedList<>();
System.out.println("Agregando valores");
for (int i = 0; i < 5; i++) {
cola.add(i);
System.out.println("Valor: " + i);
}
System.out.println("nRetirando valores");
while (cola.peek()!=null) {
System.out.println("Valor: " + cola.poll());
}
}
}
Programación Orientada a Objetos
Renato Urvina

Más contenido relacionado

Similar a Listas dinámicas y programación de objetos en java

Colecciones en java
Colecciones en javaColecciones en java
Colecciones en javaMaîck Ddz
 
3 desarollo manejo datos capitulo 4 -01 introduccion colecciones
3 desarollo manejo datos capitulo 4 -01 introduccion colecciones3 desarollo manejo datos capitulo 4 -01 introduccion colecciones
3 desarollo manejo datos capitulo 4 -01 introduccion coleccionesluis freddy
 
2 2 2 Arraylist Y Operadores
2 2 2 Arraylist Y Operadores2 2 2 Arraylist Y Operadores
2 2 2 Arraylist Y OperadoresUVM
 
Declaración y creación de un arraylist
Declaración y creación de un arraylistDeclaración y creación de un arraylist
Declaración y creación de un arraylistRobert Wolf
 
Programación 3: Vector, stack, enumearator, iterator, listiterator en Java
Programación 3: Vector, stack, enumearator, iterator, listiterator en JavaProgramación 3: Vector, stack, enumearator, iterator, listiterator en Java
Programación 3: Vector, stack, enumearator, iterator, listiterator en JavaAngel Vázquez Patiño
 
Iteradores, Listas y Conjuntos en Java
Iteradores, Listas y Conjuntos en JavaIteradores, Listas y Conjuntos en Java
Iteradores, Listas y Conjuntos en JavaGaby Delgado
 
Estructuradatospilasycolas 121106170754-phpapp02
Estructuradatospilasycolas 121106170754-phpapp02Estructuradatospilasycolas 121106170754-phpapp02
Estructuradatospilasycolas 121106170754-phpapp02Z Karina Hernandez A
 
Scala collections
Scala collectionsScala collections
Scala collectionscrissbal94
 
Chuleta de aprendizaje de Python3 (1).pdf
Chuleta de aprendizaje de Python3 (1).pdfChuleta de aprendizaje de Python3 (1).pdf
Chuleta de aprendizaje de Python3 (1).pdfvictorpedro20
 
Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Juan Astudillo
 
Tema 6 colecciones por gio
Tema 6   colecciones por gioTema 6   colecciones por gio
Tema 6 colecciones por gioRobert Wolf
 
Tema 4 clases_y_objetos
Tema 4 clases_y_objetosTema 4 clases_y_objetos
Tema 4 clases_y_objetosBelenMonse
 

Similar a Listas dinámicas y programación de objetos en java (20)

Colecciones en java
Colecciones en javaColecciones en java
Colecciones en java
 
3 desarollo manejo datos capitulo 4 -01 introduccion colecciones
3 desarollo manejo datos capitulo 4 -01 introduccion colecciones3 desarollo manejo datos capitulo 4 -01 introduccion colecciones
3 desarollo manejo datos capitulo 4 -01 introduccion colecciones
 
2 2 2 Arraylist Y Operadores
2 2 2 Arraylist Y Operadores2 2 2 Arraylist Y Operadores
2 2 2 Arraylist Y Operadores
 
Declaración y creación de un arraylist
Declaración y creación de un arraylistDeclaración y creación de un arraylist
Declaración y creación de un arraylist
 
Programacion
ProgramacionProgramacion
Programacion
 
Programación 3: Vector, stack, enumearator, iterator, listiterator en Java
Programación 3: Vector, stack, enumearator, iterator, listiterator en JavaProgramación 3: Vector, stack, enumearator, iterator, listiterator en Java
Programación 3: Vector, stack, enumearator, iterator, listiterator en Java
 
Pilas Colas
Pilas ColasPilas Colas
Pilas Colas
 
Iteradores, Listas y Conjuntos en Java
Iteradores, Listas y Conjuntos en JavaIteradores, Listas y Conjuntos en Java
Iteradores, Listas y Conjuntos en Java
 
Estructura datos pilas y colas
Estructura datos pilas y colasEstructura datos pilas y colas
Estructura datos pilas y colas
 
Estructuradatospilasycolas 121106170754-phpapp02
Estructuradatospilasycolas 121106170754-phpapp02Estructuradatospilasycolas 121106170754-phpapp02
Estructuradatospilasycolas 121106170754-phpapp02
 
Estructura de datos pilas y colas
Estructura de datos pilas y colasEstructura de datos pilas y colas
Estructura de datos pilas y colas
 
Listas Pilas Colas
Listas Pilas ColasListas Pilas Colas
Listas Pilas Colas
 
Scala collections
Scala collectionsScala collections
Scala collections
 
Presentación1
Presentación1Presentación1
Presentación1
 
Chuleta de aprendizaje de Python3 (1).pdf
Chuleta de aprendizaje de Python3 (1).pdfChuleta de aprendizaje de Python3 (1).pdf
Chuleta de aprendizaje de Python3 (1).pdf
 
Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)
 
Tema 6 colecciones por gio
Tema 6   colecciones por gioTema 6   colecciones por gio
Tema 6 colecciones por gio
 
JAVA OO - TEMA 08 - COLECCIONES
JAVA OO - TEMA 08 - COLECCIONESJAVA OO - TEMA 08 - COLECCIONES
JAVA OO - TEMA 08 - COLECCIONES
 
Tema 4 clases_y_objetos
Tema 4 clases_y_objetosTema 4 clases_y_objetos
Tema 4 clases_y_objetos
 
Tema6
Tema6Tema6
Tema6
 

Más de apssoftwaredegestion

Más de apssoftwaredegestion (7)

introducción a herencia programación orientada a objetos
introducción a herencia programación orientada a objetosintroducción a herencia programación orientada a objetos
introducción a herencia programación orientada a objetos
 
clase 01BDF.pdf
clase 01BDF.pdfclase 01BDF.pdf
clase 01BDF.pdf
 
el-software-y-sus-clases.pdf
el-software-y-sus-clases.pdfel-software-y-sus-clases.pdf
el-software-y-sus-clases.pdf
 
Las-Variables.pdf
Las-Variables.pdfLas-Variables.pdf
Las-Variables.pdf
 
BD Federadas 01.pptx
BD Federadas 01.pptxBD Federadas 01.pptx
BD Federadas 01.pptx
 
El arte de la ciencia de datos
El arte de la ciencia de datosEl arte de la ciencia de datos
El arte de la ciencia de datos
 
Qué es la ciencia de datos.pdf
Qué es la ciencia de datos.pdfQué es la ciencia de datos.pdf
Qué es la ciencia de datos.pdf
 

Último

Apunte clase teorica propiedades de la Madera.pdf
Apunte clase teorica propiedades de la Madera.pdfApunte clase teorica propiedades de la Madera.pdf
Apunte clase teorica propiedades de la Madera.pdfGonella
 
TAREA_1_GRUPO7_ADMINISTRACIÓN_DE_EMPRESA.pptx
TAREA_1_GRUPO7_ADMINISTRACIÓN_DE_EMPRESA.pptxTAREA_1_GRUPO7_ADMINISTRACIÓN_DE_EMPRESA.pptx
TAREA_1_GRUPO7_ADMINISTRACIÓN_DE_EMPRESA.pptxjosem5454881
 
Presentación de la propuesta de clase.pdf
Presentación de la propuesta de clase.pdfPresentación de la propuesta de clase.pdf
Presentación de la propuesta de clase.pdfFranciscoJavierEstra11
 
Escucha tu Cerebro en Nuevos Escenarios PE3 Ccesa007.pdf
Escucha tu Cerebro en Nuevos Escenarios  PE3  Ccesa007.pdfEscucha tu Cerebro en Nuevos Escenarios  PE3  Ccesa007.pdf
Escucha tu Cerebro en Nuevos Escenarios PE3 Ccesa007.pdfDemetrio Ccesa Rayme
 
Realitat o fake news? – Què causa el canvi climàtic? - La desertització
Realitat o fake news? – Què causa el canvi climàtic? - La desertitzacióRealitat o fake news? – Què causa el canvi climàtic? - La desertització
Realitat o fake news? – Què causa el canvi climàtic? - La desertitzacióPere Miquel Rosselló Espases
 
ACERTIJO EL NÚMERO PI COLOREA EMBLEMA OLÍMPICO DE PARÍS. Por JAVIER SOLIS NOYOLA
ACERTIJO EL NÚMERO PI COLOREA EMBLEMA OLÍMPICO DE PARÍS. Por JAVIER SOLIS NOYOLAACERTIJO EL NÚMERO PI COLOREA EMBLEMA OLÍMPICO DE PARÍS. Por JAVIER SOLIS NOYOLA
ACERTIJO EL NÚMERO PI COLOREA EMBLEMA OLÍMPICO DE PARÍS. Por JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
PLAN ANUAL DE TUTORIA PARA SEGUNDO AÑO DE SECUNDARIA
PLAN ANUAL DE TUTORIA PARA  SEGUNDO AÑO DE SECUNDARIAPLAN ANUAL DE TUTORIA PARA  SEGUNDO AÑO DE SECUNDARIA
PLAN ANUAL DE TUTORIA PARA SEGUNDO AÑO DE SECUNDARIAzullycelestinoparede
 
Síndrome piramidal 2024 según alvarez, farrera y wuani
Síndrome piramidal 2024 según alvarez, farrera y wuaniSíndrome piramidal 2024 según alvarez, farrera y wuani
Síndrome piramidal 2024 según alvarez, farrera y wuanishflorezg
 
Botiquin del amor - Plantillas digitales.pdf
Botiquin del amor - Plantillas digitales.pdfBotiquin del amor - Plantillas digitales.pdf
Botiquin del amor - Plantillas digitales.pdfefmenaes
 
POEMAS ILUSTRADOS DE LUÍSA VILLALTA. Elaborados polos alumnos de 4º PDC do IE...
POEMAS ILUSTRADOS DE LUÍSA VILLALTA. Elaborados polos alumnos de 4º PDC do IE...POEMAS ILUSTRADOS DE LUÍSA VILLALTA. Elaborados polos alumnos de 4º PDC do IE...
POEMAS ILUSTRADOS DE LUÍSA VILLALTA. Elaborados polos alumnos de 4º PDC do IE...Agrela Elvixeo
 
SESION DE APRENDIZAJE PARA3ER GRADO -EL SISTEMA DIGESTIVO
SESION DE APRENDIZAJE PARA3ER GRADO -EL SISTEMA DIGESTIVOSESION DE APRENDIZAJE PARA3ER GRADO -EL SISTEMA DIGESTIVO
SESION DE APRENDIZAJE PARA3ER GRADO -EL SISTEMA DIGESTIVOJuanaBellidocollahua
 
FICHA DE LA VIRGEN DE FÁTIMA.pdf educación religiosa primaria de menores
FICHA DE LA VIRGEN DE FÁTIMA.pdf educación religiosa primaria de menoresFICHA DE LA VIRGEN DE FÁTIMA.pdf educación religiosa primaria de menores
FICHA DE LA VIRGEN DE FÁTIMA.pdf educación religiosa primaria de menoresSantosprez2
 
Realitat o fake news? – Què causa el canvi climàtic? - Modificacions dels pat...
Realitat o fake news? – Què causa el canvi climàtic? - Modificacions dels pat...Realitat o fake news? – Què causa el canvi climàtic? - Modificacions dels pat...
Realitat o fake news? – Què causa el canvi climàtic? - Modificacions dels pat...Pere Miquel Rosselló Espases
 
TEMA EGIPTO.pdf. Presentación civilización
TEMA EGIPTO.pdf. Presentación civilizaciónTEMA EGIPTO.pdf. Presentación civilización
TEMA EGIPTO.pdf. Presentación civilizaciónVasallo1
 
AEC2. Egipto Antiguo. Adivina, Adivinanza.pptx
AEC2. Egipto Antiguo. Adivina, Adivinanza.pptxAEC2. Egipto Antiguo. Adivina, Adivinanza.pptx
AEC2. Egipto Antiguo. Adivina, Adivinanza.pptxhenarfdez
 
Ediciones Previas Proyecto de Innovacion Pedagogica ORIGAMI 3D Ccesa007.pdf
Ediciones Previas Proyecto de Innovacion Pedagogica ORIGAMI 3D  Ccesa007.pdfEdiciones Previas Proyecto de Innovacion Pedagogica ORIGAMI 3D  Ccesa007.pdf
Ediciones Previas Proyecto de Innovacion Pedagogica ORIGAMI 3D Ccesa007.pdfDemetrio Ccesa Rayme
 
AEC 2. Aventura en el Antiguo Egipto.pptx
AEC 2. Aventura en el Antiguo Egipto.pptxAEC 2. Aventura en el Antiguo Egipto.pptx
AEC 2. Aventura en el Antiguo Egipto.pptxhenarfdez
 
Programa dia de las madres para la convi
Programa dia de las madres para la conviPrograma dia de las madres para la convi
Programa dia de las madres para la convikevinmolina060703
 

Último (20)

Apunte clase teorica propiedades de la Madera.pdf
Apunte clase teorica propiedades de la Madera.pdfApunte clase teorica propiedades de la Madera.pdf
Apunte clase teorica propiedades de la Madera.pdf
 
TAREA_1_GRUPO7_ADMINISTRACIÓN_DE_EMPRESA.pptx
TAREA_1_GRUPO7_ADMINISTRACIÓN_DE_EMPRESA.pptxTAREA_1_GRUPO7_ADMINISTRACIÓN_DE_EMPRESA.pptx
TAREA_1_GRUPO7_ADMINISTRACIÓN_DE_EMPRESA.pptx
 
Presentación de la propuesta de clase.pdf
Presentación de la propuesta de clase.pdfPresentación de la propuesta de clase.pdf
Presentación de la propuesta de clase.pdf
 
Escucha tu Cerebro en Nuevos Escenarios PE3 Ccesa007.pdf
Escucha tu Cerebro en Nuevos Escenarios  PE3  Ccesa007.pdfEscucha tu Cerebro en Nuevos Escenarios  PE3  Ccesa007.pdf
Escucha tu Cerebro en Nuevos Escenarios PE3 Ccesa007.pdf
 
Realitat o fake news? – Què causa el canvi climàtic? - La desertització
Realitat o fake news? – Què causa el canvi climàtic? - La desertitzacióRealitat o fake news? – Què causa el canvi climàtic? - La desertització
Realitat o fake news? – Què causa el canvi climàtic? - La desertització
 
ACERTIJO EL NÚMERO PI COLOREA EMBLEMA OLÍMPICO DE PARÍS. Por JAVIER SOLIS NOYOLA
ACERTIJO EL NÚMERO PI COLOREA EMBLEMA OLÍMPICO DE PARÍS. Por JAVIER SOLIS NOYOLAACERTIJO EL NÚMERO PI COLOREA EMBLEMA OLÍMPICO DE PARÍS. Por JAVIER SOLIS NOYOLA
ACERTIJO EL NÚMERO PI COLOREA EMBLEMA OLÍMPICO DE PARÍS. Por JAVIER SOLIS NOYOLA
 
PLAN ANUAL DE TUTORIA PARA SEGUNDO AÑO DE SECUNDARIA
PLAN ANUAL DE TUTORIA PARA  SEGUNDO AÑO DE SECUNDARIAPLAN ANUAL DE TUTORIA PARA  SEGUNDO AÑO DE SECUNDARIA
PLAN ANUAL DE TUTORIA PARA SEGUNDO AÑO DE SECUNDARIA
 
Síndrome piramidal 2024 según alvarez, farrera y wuani
Síndrome piramidal 2024 según alvarez, farrera y wuaniSíndrome piramidal 2024 según alvarez, farrera y wuani
Síndrome piramidal 2024 según alvarez, farrera y wuani
 
Botiquin del amor - Plantillas digitales.pdf
Botiquin del amor - Plantillas digitales.pdfBotiquin del amor - Plantillas digitales.pdf
Botiquin del amor - Plantillas digitales.pdf
 
POEMAS ILUSTRADOS DE LUÍSA VILLALTA. Elaborados polos alumnos de 4º PDC do IE...
POEMAS ILUSTRADOS DE LUÍSA VILLALTA. Elaborados polos alumnos de 4º PDC do IE...POEMAS ILUSTRADOS DE LUÍSA VILLALTA. Elaborados polos alumnos de 4º PDC do IE...
POEMAS ILUSTRADOS DE LUÍSA VILLALTA. Elaborados polos alumnos de 4º PDC do IE...
 
SESION DE APRENDIZAJE PARA3ER GRADO -EL SISTEMA DIGESTIVO
SESION DE APRENDIZAJE PARA3ER GRADO -EL SISTEMA DIGESTIVOSESION DE APRENDIZAJE PARA3ER GRADO -EL SISTEMA DIGESTIVO
SESION DE APRENDIZAJE PARA3ER GRADO -EL SISTEMA DIGESTIVO
 
FICHA DE LA VIRGEN DE FÁTIMA.pdf educación religiosa primaria de menores
FICHA DE LA VIRGEN DE FÁTIMA.pdf educación religiosa primaria de menoresFICHA DE LA VIRGEN DE FÁTIMA.pdf educación religiosa primaria de menores
FICHA DE LA VIRGEN DE FÁTIMA.pdf educación religiosa primaria de menores
 
Motivados por la esperanza. Esperanza en Jesús
Motivados por la esperanza. Esperanza en JesúsMotivados por la esperanza. Esperanza en Jesús
Motivados por la esperanza. Esperanza en Jesús
 
Realitat o fake news? – Què causa el canvi climàtic? - Modificacions dels pat...
Realitat o fake news? – Què causa el canvi climàtic? - Modificacions dels pat...Realitat o fake news? – Què causa el canvi climàtic? - Modificacions dels pat...
Realitat o fake news? – Què causa el canvi climàtic? - Modificacions dels pat...
 
TEMA EGIPTO.pdf. Presentación civilización
TEMA EGIPTO.pdf. Presentación civilizaciónTEMA EGIPTO.pdf. Presentación civilización
TEMA EGIPTO.pdf. Presentación civilización
 
AEC2. Egipto Antiguo. Adivina, Adivinanza.pptx
AEC2. Egipto Antiguo. Adivina, Adivinanza.pptxAEC2. Egipto Antiguo. Adivina, Adivinanza.pptx
AEC2. Egipto Antiguo. Adivina, Adivinanza.pptx
 
Ediciones Previas Proyecto de Innovacion Pedagogica ORIGAMI 3D Ccesa007.pdf
Ediciones Previas Proyecto de Innovacion Pedagogica ORIGAMI 3D  Ccesa007.pdfEdiciones Previas Proyecto de Innovacion Pedagogica ORIGAMI 3D  Ccesa007.pdf
Ediciones Previas Proyecto de Innovacion Pedagogica ORIGAMI 3D Ccesa007.pdf
 
AEC 2. Aventura en el Antiguo Egipto.pptx
AEC 2. Aventura en el Antiguo Egipto.pptxAEC 2. Aventura en el Antiguo Egipto.pptx
AEC 2. Aventura en el Antiguo Egipto.pptx
 
Programa dia de las madres para la convi
Programa dia de las madres para la conviPrograma dia de las madres para la convi
Programa dia de las madres para la convi
 
Salud mental y bullying en adolescentes.
Salud mental y bullying en adolescentes.Salud mental y bullying en adolescentes.
Salud mental y bullying en adolescentes.
 

Listas dinámicas y programación de objetos en java

  • 1. Renato Urvina Escuela de Ingenierías Ingeniería en Sistemas de Información Programación Orientada a Objetos
  • 2. Programación Orientada a Objetos Programación Orientada a Objetos Clase 08 Estructuras de Datos y Objetos Renato Urvina
  • 3. Programación Orientada a Objetos Antecedentes Colecciones de datos Una problemática que surge frecuentemente en la programación, es organizar una colección de objetos. La primera solución que nos surge es utilizar un array String[] nombres = new String[10]; Surgen aspectos que se presentan en casi todas las colecciones: ¿cómo gestionar cuando el array se llena?, ¿buscar si un elemento ya existe?, ¿ordenar los elementos?...Cuando el número de objetos crece en la colección, la velocidad de respuesta se vuelve un problema Java tiene un juego de clases e interfaces para guardar colecciones de objetos, que nos dan soluciones a las problemáticas planteadas Renato Urvina
  • 4. Programación Orientada a Objetos Antecedentes Collection e Iterator La interfaz más importante es Collection<E>. Una Collection es todo aquello que se puede recorrer (o iterar) y de lo que se puede saber el tamaño. Muchas otras clases implementaran Collection añadiendo más funcionalidades. Las operaciones básicas de una Collection son: • add(T e). Añade un elemento • clear(). Borra la colección • remove(Object obj). Borra un elemento • isEmpty(). Indica si está vacía • iterator(). Devuelve un Iterator de la colección, útil para realizar un recorrido de uno en uno. • size(). Devuelve el tamaño de la colección • contains(Object e). Nos indica si el objeto está contenido. • toArray(...). Devuelve un array con el contenido de la colección Renato Urvina
  • 5. Programación Orientada a Objetos Antecedentes Collection e Iterator Tenemos dos formas de recorrer una colección. Una es con la sentencia for each, esta es una buena opción si solo queremos realizar operaciones de lectura. La segunda mediante un iterator, resulta mejor cuando queramos realizar modificaciones de la colección. Las operaciones de un Iterator son: • hasNext(). Devuelve true si existen más elementos • next(). Devuelve el siguiente elemento • remove(). Borrar el elemento de la colección Renato Urvina Collection<String> lista = new ArrayList<String>(); lista.add("uno"); lista.add(""); lista.add("dos"); for (String item : lista) System.out.println(item); Iterator<String> it = lista.iterator(); while (it.hasNext()) { String s = it.next(); if (s.equals("")) it.remove(); }
  • 6. Programación Orientada a Objetos Antecedentes Collection e Iterator Existen un conjunto de interfaces que heredan de Collection, que nos aportan más prestaciones. Algunos de ellos son: • List. Es una colección donde se mantiene la posición de los elementos. No está ordenada y puede haber elementos repetidos • Set. Es una colección en la que no existen elementos repetidos • Queue. Es una colección que mantiene una prioridad de procesamiento Renato Urvina
  • 7. Programación Orientada a Objetos Renato Urvina
  • 8. Programación Orientada a Objetos Antecedentes List. Es una lista, no ordenada, en que se mantiene el orden de los elementos, pudiendo acceder a su contenido según la posición. Esta lista crece según las necesidades, con lo que nos podemos olvidar de los tamaños. Este interface hereda de Collection, y añade los siguientes métodos: add(int index, E element). Se añade en una posición determinada get(int index). Se recupera el elemento de una posición set(int index, E element). Reemplaza el elemento de una posición Podemos destacar las siguientes implementaciones del interfaz. La clase LinkedList implementa la lógica para trabajar con listas genéricas, es decir podemos insertar y extraer elementos de cualquier parte de la lista. Renato Urvina
  • 9. Programación Orientada a Objetos Antecedentes List. ARRAYLIST Esta implementación mantiene la lista compactada en un array. Tiene la ventaja de realizar lecturas muy rápidas. El problema está en borrar elementos intermedios, ya que tiene que mover el resto del contenido. Esta clase no está preparada para trabajar con varios hilos; para ello tenemos la implementación Vector. VECTOR Es muy parecida al anterior, pero con la diferencia de estar preparada para trabajar con hilos LINKEDLIST Esta lista se implementa mediante una lista entrelazada, formada por nodos que apuntan al elemento siguiente y el elemento anterior. Esta implementación favorece las inserciones y el borrado, pero hacen muy lento el recorrido. Renato Urvina public class PruebaList { public static void main(String[] args) { List<String> lista = new ArrayList<String>(); lista.add("uno"); lista.add("dos"); lista.add("tres"); lista.add("uno"); // Se permiten elementos repetidos IO.out.println(lista); lista.remove("dos"); lista.remove(0); IO.out.println("size: " + lista.size()); IO.out.println("index: " + lista.indexOf("tres")); IO.out.println(lista); } }
  • 10. Programación Orientada a Objetos Antecedentes List. Ejemplo LinkedList Hacer una lista ligada con objetos de la clase Alumno. atributos: Nombre (String), matrícula (integer) y nota(double) Insertar al principio de la lista los siguientes elementos: • Pedro Martínez matricula: 943012 tiene: 9.8 • Eleazar Hernández matricula: 274901 tiene: 8.5 • Obdulia García matricula: 204117 tiene: 7.3 Renato Urvina public class Alumno { String nombre; Double calific; Integer matricula; public Alumno( String nom, Double cal, Integer matr ) { this.nombre = nom; this.calific = cal; this.matricula= matr; } public String toString() { return this.nombre + " matricula: " + this.matricula + " tiene: " + this.calific; } }
  • 11. Programación Orientada a Objetos Antecedentes List. Ejemplo LinkedList Renato Urvina public class Alumno { String nombre; Double calific; Integer matricula; public Alumno( String nom, Double cal, Integer matr ) { this.nombre = nom; this.calific = cal; this.matricula= matr; } public String toString() { return this.nombre + " matricula: " + this.matricula + " tiene: " + this.calific; } } /*class main */ import java.util.LinkedList; public class ListasLigadasMain { public static void main( String[] args ) { // hacer una lista de Alumnos LinkedList<Alumno> listaAlumnos = new LinkedList<Alumno>(); Alumno alumno1 = new Alumno( "Pedro Martinez", 9.8, 943012 ); listaAlumnos.addFirst( alumno1 ); Alumno alumno2 = new Alumno( "Eleazar Hernandez", 8.5, 274901); listaAlumnos.addFirst( alumno2 ); Alumno alumno3 = new Alumno( "Obdulia Garcia", 7.3, 204117 ); listaAlumnos.addFirst( alumno3 ); // desplegar la lista desplegarLista( listaAlumnos ); } public static void desplegarLista( LinkedList l ) { for ( int i = 0; i < l.size(); i++ ) System.out.println( l.get( i ) ); } }
  • 12. Programación Orientada a Objetos Antecedentes Queue Esta colección está pensada para organizar una cola (FIFO). Los elementos se añaden por el final, y se extraen por el principio. Dispone de los siguientes métodos: • boolean add(E e). Inserta un elemento en la cola, provoca una excepción si no existe espacio disponible. • E element(). Recupera sin borrar la cabeza de la cola, si está vacía provoca una excepción • boolean offer(E e). Inserta, si puede, un elemento en la cola. • E peek(). Recupera sin borrar la cabeza de la cola, si está vacía devuelve null • E poll(). Recupera y borra la cabeza de la cola, o devuelve null si está vacía • E remove(). Recupera y borra la cabeza de la cola, si está vacía provoca una excepción La clase LinkedList también implementa esta interface. Existe el interface Deque, que implementa una cola doble, útil para realizar LIFO. LinkedList y ArrayDeque implementan este interface. Renato Urvina
  • 13. Programación Orientada a Objetos Antecedentes Queue • boolean add(E e). Inserta un elemento en la cola, provoca una excepción si no existe espacio disponible. • E element(). Recupera sin borrar la cabeza de la cola, si está vacía provoca una excepción • boolean offer(E e). Inserta, si puede, un elemento en la cola. • E peek(). Recupera sin borrar la cabeza de la cola, si está vacía devuelve null • E poll(). Recupera y borra la cabeza de la cola, o devuelve null si está vacía • E remove(). Recupera y borra la cabeza de la cola, si está vacía provoca una excepción Renato Urvina package test; import java.util.LinkedList; import java.util.Queue; public class Colas { public static void main(String[] args) { Queue<Integer> cola = new LinkedList<>(); System.out.println("Agregando valores"); for (int i = 0; i < 5; i++) { cola.add(i); System.out.println("Valor: " + i); } System.out.println("nRetirando valores"); while (cola.peek()!=null) { System.out.println("Valor: " + cola.poll()); } } }
  • 14. Programación Orientada a Objetos Renato Urvina