SlideShare uma empresa Scribd logo
1 de 14
Baixar para ler offline
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

Mais conteúdo relacionado

Semelhante 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
 

Semelhante 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
 

Mais de apssoftwaredegestion

Mais 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

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
 
11.NEOLIBERALISMO: que es, ventajas, desventajas, consecuenciaspptx
11.NEOLIBERALISMO: que es, ventajas, desventajas, consecuenciaspptx11.NEOLIBERALISMO: que es, ventajas, desventajas, consecuenciaspptx
11.NEOLIBERALISMO: que es, ventajas, desventajas, consecuenciaspptxFESARAUGUSTOFANDIORI
 
EVALUACION del tercer trimestre 2024 nap.docx
EVALUACION  del tercer trimestre 2024 nap.docxEVALUACION  del tercer trimestre 2024 nap.docx
EVALUACION del tercer trimestre 2024 nap.docxuniversidad Indoamerica
 
2.15. Calendario Civico Escolar 2024.docx
2.15. Calendario Civico Escolar 2024.docx2.15. Calendario Civico Escolar 2024.docx
2.15. Calendario Civico Escolar 2024.docxCarlosEnriqueArgoteC
 
cuadernillo_cuentos_de_los_valores_elprofe20 (1).docx
cuadernillo_cuentos_de_los_valores_elprofe20 (1).docxcuadernillo_cuentos_de_los_valores_elprofe20 (1).docx
cuadernillo_cuentos_de_los_valores_elprofe20 (1).docxANDREAGRACEDURANSALA
 
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
 
a propósito de la globalización y sus efectos
a propósito de la globalización y sus efectosa propósito de la globalización y sus efectos
a propósito de la globalización y sus efectossubfabian
 
ciclos biogeoquimicas y flujo de materia ecosistemas
ciclos biogeoquimicas y flujo de materia ecosistemasciclos biogeoquimicas y flujo de materia ecosistemas
ciclos biogeoquimicas y flujo de materia ecosistemasFlor Idalia Espinoza Ortega
 
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
 
4ª SESION la misión santificadora del Espíritu Santo en la vida de la Iglesi...
4ª SESION  la misión santificadora del Espíritu Santo en la vida de la Iglesi...4ª SESION  la misión santificadora del Espíritu Santo en la vida de la Iglesi...
4ª SESION la misión santificadora del Espíritu Santo en la vida de la Iglesi...Reneeavia
 
Profecia 2300 dias explicada, Daniel 8:14
Profecia 2300 dias explicada, Daniel 8:14Profecia 2300 dias explicada, Daniel 8:14
Profecia 2300 dias explicada, Daniel 8:14KevinBuenrostro4
 
PATRONES DE REFERENCIA, CRITERIOS Y DIAGNOSTICO Angeles.pptx
PATRONES DE REFERENCIA, CRITERIOS Y DIAGNOSTICO Angeles.pptxPATRONES DE REFERENCIA, CRITERIOS Y DIAGNOSTICO Angeles.pptx
PATRONES DE REFERENCIA, CRITERIOS Y DIAGNOSTICO Angeles.pptxSusanaAlejandraMende
 
Vínculo afectivo (labor expositivo de grupo )
Vínculo afectivo (labor expositivo de grupo )Vínculo afectivo (labor expositivo de grupo )
Vínculo afectivo (labor expositivo de grupo )portafoliodigitalyos
 
PLAN DE GESTION DEL RIESGO 2023 - 2024.docx
PLAN DE GESTION DEL RIESGO  2023 - 2024.docxPLAN DE GESTION DEL RIESGO  2023 - 2024.docx
PLAN DE GESTION DEL RIESGO 2023 - 2024.docxpily R.T.
 
LA GEOMETRÍA Y LOS SISTEMAS ANGULARES, APRENDER LEYENDO LA BIBLIA
LA GEOMETRÍA Y LOS SISTEMAS ANGULARES, APRENDER LEYENDO LA BIBLIALA GEOMETRÍA Y LOS SISTEMAS ANGULARES, APRENDER LEYENDO LA BIBLIA
LA GEOMETRÍA Y LOS SISTEMAS ANGULARES, APRENDER LEYENDO LA BIBLIASandra Mariela Ballón Aguedo
 
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
 
Hidrocarburos cíclicos, EJERCICIOS, TEORIA Y MÁS.pptx
Hidrocarburos cíclicos, EJERCICIOS, TEORIA Y MÁS.pptxHidrocarburos cíclicos, EJERCICIOS, TEORIA Y MÁS.pptx
Hidrocarburos cíclicos, EJERCICIOS, TEORIA Y MÁS.pptxNathaly122089
 
Comunidades Virtuales de Aprendizaje Caracteristicas.pptx
Comunidades Virtuales de Aprendizaje Caracteristicas.pptxComunidades Virtuales de Aprendizaje Caracteristicas.pptx
Comunidades Virtuales de Aprendizaje Caracteristicas.pptxJunkotantik
 

Último (20)

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
 
11.NEOLIBERALISMO: que es, ventajas, desventajas, consecuenciaspptx
11.NEOLIBERALISMO: que es, ventajas, desventajas, consecuenciaspptx11.NEOLIBERALISMO: que es, ventajas, desventajas, consecuenciaspptx
11.NEOLIBERALISMO: que es, ventajas, desventajas, consecuenciaspptx
 
EVALUACION del tercer trimestre 2024 nap.docx
EVALUACION  del tercer trimestre 2024 nap.docxEVALUACION  del tercer trimestre 2024 nap.docx
EVALUACION del tercer trimestre 2024 nap.docx
 
2.15. Calendario Civico Escolar 2024.docx
2.15. Calendario Civico Escolar 2024.docx2.15. Calendario Civico Escolar 2024.docx
2.15. Calendario Civico Escolar 2024.docx
 
cuadernillo_cuentos_de_los_valores_elprofe20 (1).docx
cuadernillo_cuentos_de_los_valores_elprofe20 (1).docxcuadernillo_cuentos_de_los_valores_elprofe20 (1).docx
cuadernillo_cuentos_de_los_valores_elprofe20 (1).docx
 
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)
 
a propósito de la globalización y sus efectos
a propósito de la globalización y sus efectosa propósito de la globalización y sus efectos
a propósito de la globalización y sus efectos
 
ciclos biogeoquimicas y flujo de materia ecosistemas
ciclos biogeoquimicas y flujo de materia ecosistemasciclos biogeoquimicas y flujo de materia ecosistemas
ciclos biogeoquimicas y flujo de materia ecosistemas
 
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
 
4ª SESION la misión santificadora del Espíritu Santo en la vida de la Iglesi...
4ª SESION  la misión santificadora del Espíritu Santo en la vida de la Iglesi...4ª SESION  la misión santificadora del Espíritu Santo en la vida de la Iglesi...
4ª SESION la misión santificadora del Espíritu Santo en la vida de la Iglesi...
 
Profecia 2300 dias explicada, Daniel 8:14
Profecia 2300 dias explicada, Daniel 8:14Profecia 2300 dias explicada, Daniel 8:14
Profecia 2300 dias explicada, Daniel 8:14
 
PATRONES DE REFERENCIA, CRITERIOS Y DIAGNOSTICO Angeles.pptx
PATRONES DE REFERENCIA, CRITERIOS Y DIAGNOSTICO Angeles.pptxPATRONES DE REFERENCIA, CRITERIOS Y DIAGNOSTICO Angeles.pptx
PATRONES DE REFERENCIA, CRITERIOS Y DIAGNOSTICO Angeles.pptx
 
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
 
La historia de la vida estudiantil a 102 años de la fundación de las Normales...
La historia de la vida estudiantil a 102 años de la fundación de las Normales...La historia de la vida estudiantil a 102 años de la fundación de las Normales...
La historia de la vida estudiantil a 102 años de la fundación de las Normales...
 
Vínculo afectivo (labor expositivo de grupo )
Vínculo afectivo (labor expositivo de grupo )Vínculo afectivo (labor expositivo de grupo )
Vínculo afectivo (labor expositivo de grupo )
 
PLAN DE GESTION DEL RIESGO 2023 - 2024.docx
PLAN DE GESTION DEL RIESGO  2023 - 2024.docxPLAN DE GESTION DEL RIESGO  2023 - 2024.docx
PLAN DE GESTION DEL RIESGO 2023 - 2024.docx
 
LA GEOMETRÍA Y LOS SISTEMAS ANGULARES, APRENDER LEYENDO LA BIBLIA
LA GEOMETRÍA Y LOS SISTEMAS ANGULARES, APRENDER LEYENDO LA BIBLIALA GEOMETRÍA Y LOS SISTEMAS ANGULARES, APRENDER LEYENDO LA BIBLIA
LA GEOMETRÍA Y LOS SISTEMAS ANGULARES, APRENDER LEYENDO LA BIBLIA
 
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
 
Hidrocarburos cíclicos, EJERCICIOS, TEORIA Y MÁS.pptx
Hidrocarburos cíclicos, EJERCICIOS, TEORIA Y MÁS.pptxHidrocarburos cíclicos, EJERCICIOS, TEORIA Y MÁS.pptx
Hidrocarburos cíclicos, EJERCICIOS, TEORIA Y MÁS.pptx
 
Comunidades Virtuales de Aprendizaje Caracteristicas.pptx
Comunidades Virtuales de Aprendizaje Caracteristicas.pptxComunidades Virtuales de Aprendizaje Caracteristicas.pptx
Comunidades Virtuales de Aprendizaje Caracteristicas.pptx
 

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