Professional Documents
Culture Documents
PAV
Java 1.0 vs Generics
class Stack { class Stack<A> {
void push(Object o) { ... } void push(A a) { ... }
Object pop() { ... } A pop() { ... }
...} ...}
protected Nodo h, t;
public LinkedList() {h = new Nodo(null); t = h;}
Interfaz Implementación
Queue
import java.util.ArrayList;
Iniciación
…
ArrayList var;
var = new ArrayList();
ArrayList
• Provee varios métodos, por ahora
analizaremos tres:
– add(Object o)
Añade el objeto “o” a la colección
– get(int i)
retorna el objeto i-ésimo de la
colección
– size()
retorna el número de elementos que tiene la colección
String a = (String)var.get(0);
Integer b = (Integer)var.get(1);
ArrayList<String> var;
var = new ArrayList<String>();
var.add(“Hola”); // OK
Integer x = new Integer(3);
var.add(x); // error!, no compila
public Alumnos() {
alumnos = new ArrayList<String>();
}
public void agregarAlumno(String alumno) {
alumnos.add(alumno);
}
public void imprimir() {
for (int i = 0; i < alumnos.size(); i++) {
String alum = alumnos.get(i);
System.out.println(alum);
}
}
ArrayList: Usando iteradores
import java.util.ArrayList;
import java.util.Iterator;
…
public class Alumnos {
…
public void imprimirIterator() {
for (Iterator<String> it = alumnos.iterator();it.hasNe
String alum = it.next();
System.out.println(alum);
}
}
}
Lista enlazada con librería
• La clase LinkedList proporciona una lista
doblemente enlazada ya programada.
• Debe ser usada junto con la clase Iterator.
• Para la librería no es necesario crear la clase
nodo. Simplemente se inserta un objeto que es el
dato que el nodo almacena dentro.
Lista enlazada. Uso de Iterator
import java.util.LinkedList;
import java.utill.Iterator;
…
• boolean hasNext()
• boolean hasPrevious()
• E next()
• int nextIndex()
• E previous()
• int previousIndex()
• void remove()
• void set(E e)
Pilas con librerías
• En la librería de colecciones existe la clase Stack,
que tiene el siguiente comportamiento:
• java.util.Stack<E>
• boolean empty() Prueba si la pila está vacía.
• E peek() Devuelve el valor del objeto que va a salir
de la pila sin eliminarlo
• E pop() Devuelve el valor del objeto que va a salir
de la pila y lo elimina de la pila
• E push(E item) Inserta un elemento en la pila
• int search(Object o) Retorna la posición del
elemento dentro de la pila
Colas con librerías
• No existe en la librería de Java una clase que implemente
directamente una cola. Lo que existe es una interfaz con
los métodos propios de una cola
• java.util.Queue<E>
• E element() Devuelve pero no elimina la cabeza de la
cola
• boolean offer(E o) Inserta el elemento o al final de la
cola si es posible
• E peek() Devuelve pero no elimina la cabeza de la cola,
devolviendo null si la cola está vacía
• E poll() Devuelve y elimina la cabeza de la cola, o da
null si la cola está vacía
• E remove() Devuelve y elimina la cabeza de la cola
Colas con librerías
• Una manera de tener una cola es usar la clase
LinkedList<E>, la cual es una implementación
de la interfaz Queue<E>.
• Esta clase tiene muchos otros métodos, pero se
puede usar limitándose a ver los propios de la
interfaz y de esa manera se puede limitar a
comportarse como una cola. Ej:
• Queue<int> miCola = new LinkedList<int>();