Documentos de Académico
Documentos de Profesional
Documentos de Cultura
prioridad en Java
1
Introducción
• Elegir las mejores estructuras de datos y algoritmos
para una tarea en particular es una de las claves
para desarrollar software de alto rendimiento.
3
Colecciones
• Sets almacena un grupo de elementos no duplicados.
• List almacenan una colección ordenada de elementos.
• Stack Apila los objetos, se procesan en un estilo LIFO (Last In –
First Out) último en entrar, primero en salir.
• Queue Las colas almacenan los objetos que se procesan en un
estilo FIFO (First in, First Out) primera entrar, primero en salir.
• PriorityQueues almacena objetos que se procesan en el orden de
sus prioridades
4
Collection
9
Ejemplo de uso
10
11
12
Iterador
13
java.util.Iterator<E>
Piense en los escenarios de uso típicos para Colecciones
◦ Recupere la lista de todos los pacientes
◦ Buscar el item de precio menor
Más a menudo deseamos recorrer cada elemento en la
colección – sea una List, Set, o su propia estructura de datos
Iterators provee una forma genérica para recorrer a través de
una colección independientemente de su implementación
a Set
iterator() c
next():d f
g
d h
a b c d e f g h i b e
i
hasNext()?
List
Iterator
iterator() a b c d e f g h i
14
Usando un Iterator
Fragmento de código esencia para la iteración en la colección:
Notas de diseño:
Los método de arriba se asumen en un objeto cuya clase implementa Collection
List, ArrayList, LinkedList, Set, HashSet, TreeSet, cola, MyOwnCollection, etc
Sabemos que tales objetos puede devolver un iterador a través del método iterador()
No sabemos la aplicación exacta de Iterator que estamos recibiendo, pero no nos
importa, siempre y cuando proporciona los métodos next() y hasNext()
15
java.lang.Iterable<T>
Iterator<Item> it = items.iterator();
for (Item item : items) { while(it.hasNext()) {
}
System.out.println(item); = Item item = it.next();
System.out.println(item);
}
16
17
Listas
18
Métodos de la interfaz Lista
20
ListIterator
• El método listIterator () o listIterator (startIndex) devuelve una
instancia de ListIterator. La interfaz ListIterator amplía la
interfaz Iterator para agregar recorrido bidireccional de la lista.
21
Las Clases ArrayList y LinkedList
• Las clases ArrayList y LinkedList son dos implementaciones
concretas de la Interfaz List
23
TestArrayAndLinkedList.java
24
TestArrayAndLinkedList.java
25
TestArrayAndLinkedList.java
26
Interfaz Comparator
• El comparador se puede usar para comparar los objetos de una clase que
no implementa Comparable.
• Puede definir un comparador para comparar los elementos de diferentes
clases.
• Para hacerlo, defina una clase que implemente la interfaz
java.util.Comparator <T> y reescriba el método compare.
27
Ejemplo de Comparator
28
TestComparator.java
29
The area of the larger object is 78.53981633974483
Métodos Static para Lists y
Collections
La clase Colecciones contiene métodos
estáticos para realizar operaciones comunes
en colecciones y listas.
30
Collections
31
Interfaz Comparable
32
Clase Vector y Stack
• Vector es una subclass de AbstractList, y Stack es una subclass
de Vector en el API de Java.
33
Clase Vector
34
Clase Stack
◼ En el Framework de Java Collections, Stack es
implementado como una extension de Vector
35
La Interface Queue
36
Deque y LinkedList
◼ La clase LinkedList implementa la interfaz Deque, que amplía la
interfaz Queue, por lo tanto, puede usar LinkedList para crear
una cola.
◼ LinkedList es ideal para operaciones de cola porque es eficiente
para insertar y eliminar elementos de ambos extremos de una
lista.
◼ Deque admite la inserción y eliminación de elementos en
ambos extremos. El nombre deque es la abreviatura de
◼ "Cola de dos extremos“.
◼ La interfaz de Deque se extiende a Cola con métodos
adicionales para insertar y eliminar elementos de ambos
extremos de la cola. Los métodos addFirst (e), removeFirst (),
addLast (e), removeLast (), getFirst (), y getLast () se definen en
la interfaz Deque.
37
LinkedList implements List y Deque.
38
TestQueue.java
39
PriorityQueue
40
PriorityQueueDemo.java
41
PriorityQueueDemo.java
42