SlideShare une entreprise Scribd logo
1  sur  14
Télécharger pour lire hors ligne
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

Contenu connexe

Similaire à 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
 

Similaire à 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
 

Plus de apssoftwaredegestion

Plus 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
 

Dernier

CONCLUSIONES DESCRIPTIVAS TIC que ayudaran a tus registrosdocx
CONCLUSIONES DESCRIPTIVAS TIC que ayudaran a tus registrosdocxCONCLUSIONES DESCRIPTIVAS TIC que ayudaran a tus registrosdocx
CONCLUSIONES DESCRIPTIVAS TIC que ayudaran a tus registrosdocxMarlynRocaOnofre
 
📝 Semana 09 - Tema 01: Tarea - Redacción del texto argumentativo
📝 Semana 09 - Tema 01: Tarea - Redacción del texto argumentativo📝 Semana 09 - Tema 01: Tarea - Redacción del texto argumentativo
📝 Semana 09 - Tema 01: Tarea - Redacción del texto argumentativoharolbustamante1
 
Comunidades Virtuales de Aprendizaje Caracteristicas.pptx
Comunidades Virtuales de Aprendizaje Caracteristicas.pptxComunidades Virtuales de Aprendizaje Caracteristicas.pptx
Comunidades Virtuales de Aprendizaje Caracteristicas.pptxJunkotantik
 
Evaluación de los Factores Internos de la Organización
Evaluación de los Factores Internos de la OrganizaciónEvaluación de los Factores Internos de la Organización
Evaluación de los Factores Internos de la OrganizaciónJonathanCovena1
 
Como construir los vínculos afectivos (Grupal)
Como construir los vínculos afectivos (Grupal)Como construir los vínculos afectivos (Grupal)
Como construir los vínculos afectivos (Grupal)portafoliodigitalyos
 
TERCER GRADO PROGRAMACION ANUAL CCSS 3° - 2024.docx
TERCER GRADO PROGRAMACION ANUAL CCSS 3° - 2024.docxTERCER GRADO PROGRAMACION ANUAL CCSS 3° - 2024.docx
TERCER GRADO PROGRAMACION ANUAL CCSS 3° - 2024.docxlitaroxselyperezmont
 
Seguridad y virus informáticos 12°B 2024
Seguridad y virus informáticos 12°B 2024Seguridad y virus informáticos 12°B 2024
Seguridad y virus informáticos 12°B 2024sergeycrastz06
 
LA ORALIDAD, DEFINICIÓN Y CARACTERÍSTICAS.pptx
LA ORALIDAD, DEFINICIÓN Y CARACTERÍSTICAS.pptxLA ORALIDAD, DEFINICIÓN Y CARACTERÍSTICAS.pptx
LA ORALIDAD, DEFINICIÓN Y CARACTERÍSTICAS.pptxJhordanBenitesSanche2
 
2. Entornos Virtuales de Aprendizaje.pptx
2. Entornos Virtuales de Aprendizaje.pptx2. Entornos Virtuales de Aprendizaje.pptx
2. Entornos Virtuales de Aprendizaje.pptxJunkotantik
 
METODOS DE EXTRACCIÓN E IDENTIFICACIÓN - 2024.pdf
METODOS DE EXTRACCIÓN E IDENTIFICACIÓN - 2024.pdfMETODOS DE EXTRACCIÓN E IDENTIFICACIÓN - 2024.pdf
METODOS DE EXTRACCIÓN E IDENTIFICACIÓN - 2024.pdfNilssaRojas1
 
Época colonial: vestimenta, costumbres y juegos de la época
Época colonial: vestimenta, costumbres y juegos de la épocaÉpoca colonial: vestimenta, costumbres y juegos de la época
Época colonial: vestimenta, costumbres y juegos de la épocacecifranco1981
 
DESCRIPCIÓN-LOS-DILEMAS-DEL-CONOCIMIENTO.pptx
DESCRIPCIÓN-LOS-DILEMAS-DEL-CONOCIMIENTO.pptxDESCRIPCIÓN-LOS-DILEMAS-DEL-CONOCIMIENTO.pptx
DESCRIPCIÓN-LOS-DILEMAS-DEL-CONOCIMIENTO.pptxMARCOSMARTINALACAYOP1
 
Tema Identificar Relaciones y Casos de Uso 19-05-24.pdf
Tema Identificar Relaciones y Casos de Uso 19-05-24.pdfTema Identificar Relaciones y Casos de Uso 19-05-24.pdf
Tema Identificar Relaciones y Casos de Uso 19-05-24.pdfNoe Castillo
 
Tipologías de vínculos afectivos (grupo)
Tipologías de vínculos afectivos (grupo)Tipologías de vínculos afectivos (grupo)
Tipologías de vínculos afectivos (grupo)portafoliodigitalyos
 
SISTEMA RESPIRATORIO DEL CUERPO HUMANO triptico.docx
SISTEMA RESPIRATORIO DEL CUERPO HUMANO triptico.docxSISTEMA RESPIRATORIO DEL CUERPO HUMANO triptico.docx
SISTEMA RESPIRATORIO DEL CUERPO HUMANO triptico.docxgesicavillanuevaqf
 
a propósito del estado su relevancia y definiciones
a propósito del estado su relevancia y definicionesa propósito del estado su relevancia y definiciones
a propósito del estado su relevancia y definicionessubfabian
 
Resumen Acuerdo 05 04 24.pdf por el que se rigen los Consejos Técnicos Escolares
Resumen Acuerdo 05 04 24.pdf por el que se rigen los Consejos Técnicos EscolaresResumen Acuerdo 05 04 24.pdf por el que se rigen los Consejos Técnicos Escolares
Resumen Acuerdo 05 04 24.pdf por el que se rigen los Consejos Técnicos EscolaresLluviaAliciaHernande
 
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
 

Dernier (20)

Power Point: Luz desde el santuario.pptx
Power Point: Luz desde el santuario.pptxPower Point: Luz desde el santuario.pptx
Power Point: Luz desde el santuario.pptx
 
CONCLUSIONES DESCRIPTIVAS TIC que ayudaran a tus registrosdocx
CONCLUSIONES DESCRIPTIVAS TIC que ayudaran a tus registrosdocxCONCLUSIONES DESCRIPTIVAS TIC que ayudaran a tus registrosdocx
CONCLUSIONES DESCRIPTIVAS TIC que ayudaran a tus registrosdocx
 
📝 Semana 09 - Tema 01: Tarea - Redacción del texto argumentativo
📝 Semana 09 - Tema 01: Tarea - Redacción del texto argumentativo📝 Semana 09 - Tema 01: Tarea - Redacción del texto argumentativo
📝 Semana 09 - Tema 01: Tarea - Redacción del texto argumentativo
 
Comunidades Virtuales de Aprendizaje Caracteristicas.pptx
Comunidades Virtuales de Aprendizaje Caracteristicas.pptxComunidades Virtuales de Aprendizaje Caracteristicas.pptx
Comunidades Virtuales de Aprendizaje Caracteristicas.pptx
 
Evaluación de los Factores Internos de la Organización
Evaluación de los Factores Internos de la OrganizaciónEvaluación de los Factores Internos de la Organización
Evaluación de los Factores Internos de la Organización
 
Como construir los vínculos afectivos (Grupal)
Como construir los vínculos afectivos (Grupal)Como construir los vínculos afectivos (Grupal)
Como construir los vínculos afectivos (Grupal)
 
TERCER GRADO PROGRAMACION ANUAL CCSS 3° - 2024.docx
TERCER GRADO PROGRAMACION ANUAL CCSS 3° - 2024.docxTERCER GRADO PROGRAMACION ANUAL CCSS 3° - 2024.docx
TERCER GRADO PROGRAMACION ANUAL CCSS 3° - 2024.docx
 
Seguridad y virus informáticos 12°B 2024
Seguridad y virus informáticos 12°B 2024Seguridad y virus informáticos 12°B 2024
Seguridad y virus informáticos 12°B 2024
 
LA ORALIDAD, DEFINICIÓN Y CARACTERÍSTICAS.pptx
LA ORALIDAD, DEFINICIÓN Y CARACTERÍSTICAS.pptxLA ORALIDAD, DEFINICIÓN Y CARACTERÍSTICAS.pptx
LA ORALIDAD, DEFINICIÓN Y CARACTERÍSTICAS.pptx
 
2. Entornos Virtuales de Aprendizaje.pptx
2. Entornos Virtuales de Aprendizaje.pptx2. Entornos Virtuales de Aprendizaje.pptx
2. Entornos Virtuales de Aprendizaje.pptx
 
METODOS DE EXTRACCIÓN E IDENTIFICACIÓN - 2024.pdf
METODOS DE EXTRACCIÓN E IDENTIFICACIÓN - 2024.pdfMETODOS DE EXTRACCIÓN E IDENTIFICACIÓN - 2024.pdf
METODOS DE EXTRACCIÓN E IDENTIFICACIÓN - 2024.pdf
 
Época colonial: vestimenta, costumbres y juegos de la época
Época colonial: vestimenta, costumbres y juegos de la épocaÉpoca colonial: vestimenta, costumbres y juegos de la época
Época colonial: vestimenta, costumbres y juegos de la época
 
DESCRIPCIÓN-LOS-DILEMAS-DEL-CONOCIMIENTO.pptx
DESCRIPCIÓN-LOS-DILEMAS-DEL-CONOCIMIENTO.pptxDESCRIPCIÓN-LOS-DILEMAS-DEL-CONOCIMIENTO.pptx
DESCRIPCIÓN-LOS-DILEMAS-DEL-CONOCIMIENTO.pptx
 
Tema Identificar Relaciones y Casos de Uso 19-05-24.pdf
Tema Identificar Relaciones y Casos de Uso 19-05-24.pdfTema Identificar Relaciones y Casos de Uso 19-05-24.pdf
Tema Identificar Relaciones y Casos de Uso 19-05-24.pdf
 
Tipologías de vínculos afectivos (grupo)
Tipologías de vínculos afectivos (grupo)Tipologías de vínculos afectivos (grupo)
Tipologías de vínculos afectivos (grupo)
 
SISTEMA RESPIRATORIO DEL CUERPO HUMANO triptico.docx
SISTEMA RESPIRATORIO DEL CUERPO HUMANO triptico.docxSISTEMA RESPIRATORIO DEL CUERPO HUMANO triptico.docx
SISTEMA RESPIRATORIO DEL CUERPO HUMANO triptico.docx
 
a propósito del estado su relevancia y definiciones
a propósito del estado su relevancia y definicionesa propósito del estado su relevancia y definiciones
a propósito del estado su relevancia y definiciones
 
Luz desde el santuario. Escuela Sabática
Luz desde el santuario. Escuela SabáticaLuz desde el santuario. Escuela Sabática
Luz desde el santuario. Escuela Sabática
 
Resumen Acuerdo 05 04 24.pdf por el que se rigen los Consejos Técnicos Escolares
Resumen Acuerdo 05 04 24.pdf por el que se rigen los Consejos Técnicos EscolaresResumen Acuerdo 05 04 24.pdf por el que se rigen los Consejos Técnicos Escolares
Resumen Acuerdo 05 04 24.pdf por el que se rigen los Consejos Técnicos Escolares
 
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
 

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