Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Cap1 Intro PDF
Cap1 Intro PDF
DE CANTABRIA
1. Introducción
2. Estructuras de datos lineales
3. Estructuras de datos jerárquicas
4. Grafos y caminos
5. Implementación de listas, colas, y pilas
6. Implementación de mapas, árboles, y grafos
1. Introducción
• 1.1 Estructuras de datos abstractas
• 1.2 Eficiencia de las estructuras de datos
• 1.3 Interfaces y herencia múltiple
• 1.4 Estructuras de datos genéricas
• 1.5 Colecciones
• 1.6 Iteradores
• 1.7 Relaciones de igualdad y orden
Objeto
Parte Operación 1
Pública Parte
Privada
Operación 2 Estado
Operación n
2n n3/2
3000 5n2
100n
2000
T(n)
1000
0
1
11
16
21
26
n
3n3+2n2 ≤ 5n3
En definitiva, cuando decimos que T(n) es O(f(n)), esto significa
que f(n) es el límite de la velocidad de crecimiento de T(n)
1. O(1), o constante
2. O(log(n)), o logarítmico
3. O(n), o lineal
4. O(n⋅log(n))
5. O(n2), o cuadrático
6. O(nx), o polinómico
7. O(2n), o exponencial
n 1 log(n) n⋅log(n) n2
128 1 7 896 16384
256 1 8 2048 65536
512 1 9 4608 262144
1024 1 10 10240 1048576
2048 1 11 22528 4194304
4096 1 12 49152 16777216
8192 1 13 106496 67108864
16384 1 14 229376 268435456
32768 1 15 491520 1073741824
n–1 2
1 n n
∑ ( n – i ) = --
- n ( n – 1 ) = ----
- – ---
2 2 2
i=1
• que es O(n2)
Ser Vivo
Vehiculo
Al usar el objeto
• puede usarse con objetos de la clase del parámetro genérico o
de sus subclases
• por ejemplo, podemos almacenar en la lista, usando sus
métodos, objetos de la clase Alumno, o de sus subclases
Declaración de módulos genéricos
/**
* Almacén de un objeto cualquiera
* (del tipo T indeterminado)
*/
public class Almacen <T>
{
private T contenido;
private boolean hayAlgo;
Para crear objetos a partir de una clase genérica hay que indicar
cuál es el parámetro genérico
alPer.almacena(p);
alAni.almacena(a);
Persona sacado= alPer.saca();
<<interfaz>>
<<interfaz>> Collection
List
<<interfaz>>
Queue
HashSet TreeSet
<<interfaz>>
Map
<<interfaz>>
SortedMap
HashMap TreeMap
Interfaz Descripción
Collection Colección de cero o más elementos, que se pueden añadir o
quitar
List Colección que admite elementos repetidos y en los que éstos
tienen un orden establecido
Queue Colección para el almacenamiento de datos intermedios, con
operaciones adicionales de inserción y consulta
Set Conjunto: no admite elementos repetidos
SortedSet Conjunto en el que los elementos están en orden ascendente
Map Contiene pares de valores {clave,valor}, para poder obtener un
valor dada una clave
SortedMap Mapa en el que las parejas se ordenan por sus claves
Clase Descripción
ArrayList Tabla de tamaño que puede crecer. Antes se llamaba Vector
LinkedList Lista de tamaño indefinido, con operaciones de inserción y eli-
minación que son O(1). También sirve para definir colas (FIFO)
y pilas
PriorityQueue Cola de prioridad, donde los elementos se almacenan ordena-
dos según una relación de orden establecida al crearla
HashSet Conjunto implementado con tablas de troceado (hash) que
habitualmente tiene tiempos de inserción, eliminación y bús-
queda que son O(1)
TreeSet Conjunto implementado con árbol binario con operaciones de
inserción, eliminación y búsqueda que son O(log n)
HashMap Mapa con operaciones que habitualmente son O(1)
TreeMap Mapa con operaciones que habitualmente son O(log n)
/**
* Retorna el siguiente elemento, y avanza el
* cursor hacia adelante. Si no hay elemento
* siguiente lanza NoSuchElementException
*/
public T next();
/**
* Elimina el elemento previo de la colección
* Lanza IllegalStateException si no hay
* previo o si ya se había borrado desde la
* ultima llamada a next()
*/
public void remove();
Ejemplo:
import java.util.*;
public class Ruta
{
// lista de coordenadas
private LinkedList<Coordenada> lista;
/**
* Constructor; crea la lista vacía
*/
public Ruta(){
lista=new LinkedList<Coordenada>();
}
/**
* Recorre la lista mostrando en pantalla
* sus elementos
*/
public void muestra() {
Iterator<Coordenada> iter=
lista.iterator();
while (iter.hasNext()) {
Coordenada c=iter.next();
System.out.println(c.aTexto());
}
}
...
}
// Colección de textos
Collection <String> c= ...;
import java.util.*;
public class Alumno
implements Comparable <Alumno>
{
private String nombre;
private String dni;
/**
* Comparación
*/
public int compareTo(Alumno a) {
return this.dni.compareTo(a.dni);
}
}
Observar la asimetría:
• equals tiene como parámetro un Object
• compareTo tiene como parámetro un Alumno