![Page 1: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/1.jpg)
Informática III
Colecciones en Java
Lectura adicional:http://www.javaworld.com/javaworld/jw-09-2001/jw-0921-interface.html
![Page 2: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/2.jpg)
Qué son las colecciones?
La mayoría de los programas usan colecciones (contenedores) de datos Un conjunto de usuarios Palabras de un diccionario Una lista de números Una lista de personas y sus direcciones de email Colecciones de mayor orden: Listas de conjuntos o conjuntos de listas
![Page 3: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/3.jpg)
Arrays Tamaño fijo, definido en la declaración. Una vez establecido no puede modificarse Todos los elementos del array deben ser del mismo tipo o de algún subtipo Se accede a cada elemento mediante un índice entero Cada array tiene un atributo length que almacena su dimensión Acceder a un elemento con índice negativo o mayor a length lanza una ArrayIndexOutOfBoundsException Acceder a un elemento antes de almacenarlo lanza una NullPointerException
![Page 4: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/4.jpg)
Arrays
Arrays de referencias a objetos Declarar el array Dimensionarlo Llenar los elementos individuales con objetos
Empleado [] emps = new Empleado[6];for (int j = 0; j < emps.length; j++)
{ emps[j] = new Empleado();}
emps[0].setName(“José”);...
Paso 1Paso 2
Paso 3
![Page 5: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/5.jpg)
La clase Arrays
Clase de utilidad (java.util). Sólo métodos static class Arrays
static void sort(Object[ ] a)//orden naturalstatic int binarySearch(Object[ ] a, Object key)static boolean equals(Object[ ] a, Object[ ] a2)static void fill(Object[ ] a, Object val)
static List asList(Object[ ] a) /* también versiones de los métodos para cada tipo de datos primitivos*/
![Page 6: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/6.jpg)
Repaso de interfaces Cuánto más abstracción se añade se obtiene mayor flexibilidad. El
polimorfismo ayuda a construir programas más flexibles. Las interfaces brindan más polimorfismo que el que puede obtenerse
usando familias de clases con relación de herencia.
Ejemplo: interface Talkative { void talk();} abstract class Animal implements Talkative { abstract public void talk();} class Dog extends Animal { public void talk() { System.out.println("Woof!"); }} class Cat extends Animal { public void talk() { System.out.println("Meow."); }} class Interrogator { static void makeItTalk(Talkative subject) { subject.talk(); }} //se puede aún añadir una clase nueva de
una familia // completamente distinta y seguir pasando como argumentos instancias de esta // nueva clase a makeItTalk( ).
![Page 7: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/7.jpg)
Repaso de interfaces
class Clock {//….}class CuckooClock extends Clock implements Talkative { public void talk() { System.out.println("Cuckoo, cuckoo!"); }}class Example4 { public static void main(String[] args) { CuckooClock cc = new CuckooClock(); Interrogator.makeItTalk(cc); }}//la interface me permite usar polimorfismo en familias de clases sin relación// de herencia. Otro ejemplo:f(){ LinkedList list = new LinkedList(); //... g( list );}g( LinkedList list ){ list.add( ... ); g2( list )}
![Page 8: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/8.jpg)
Repaso de interfaces
Supongo que ahora necesito realizar búsquedas más rápidas y queLinkedList no resuelve este problema y necesito reemplazarla por
HashSet.En el código anterior los cambios no están localizados sino que necesitocambiar f(), g() y todos los sitios donde se invoque a g(), puesto que g()modifica su signatura. Reescribiendo:f(){ Collection list = new LinkedList();//este código sí haría posible // reemplazarLinkedList por HashSet y no tener que hacer ningún cambio
//más. //... g( list );}g( Collection list ){ list.add( ... ); g2( list )}
![Page 9: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/9.jpg)
Repaso de interfacesOtro ejemplo relacionado: f(){ Collection c = new HashSet(); //... g( c );}//paso como argumento una coleccióng( Collection c ){ for( Iterator i = c.iterator(); i.hasNext() ;)//itera en la colección y hace
algo do_something_with( i.next() );}Comparada con esta otro código:f2() { Collection c = new HashSet(); //... g2( c.iterator() );}//paso como argumento un iteradorg2( Iterator i )//Puede iterar en colecciones o Mapas o en lugar de esto { while( i.hasNext() )//usar iteradores que generen datos, por ej. que do_something_with( i.next() );}//alimenten al programa con datos
de un //archivo=>tengo más flexibilidad
![Page 10: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/10.jpg)
Repaso de interfacesUse interfaces para representar
abstracciones que puedan tener múltiples implementaciones. Mientras no cambie la interface se pueden hacer toda clase de cambios a las clases que la implementan o añadir nuevas implementaciones, sin que esto tenga ningún impacto en el código que depende sólo de la interface.
Use interfaces para modelizar todo lo que es probable que cambie a menudo. El polimorfismo permite cambiar libremente de una implementación a otra. El uso de clases concreta ata al programador a implementaciones específicas y hace los cambios innecesariamente difíciles.
![Page 11: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/11.jpg)
Java Frameworks
Conjunto de clases (interfaces, clases abstractas y clases concretas) que permiten implementaciones reusables de conceptos que suelen encontrarse en programación Ejemplos de Java Frameworks: Java Collection Framework (JCF) Interface gráfica de usuario(GUI) Input/Output
![Page 12: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/12.jpg)
Qué es el JCF? (JDK 1.2)
Arquitectura unificada para representar y manipular colecciones JCF consta de: Interfaces (ADTs) Implementaciones concretas (estructuras de datos reusables) Algoritmos (funcionalidad reusable)C++’s Standard
Template Library es también un framework
de colecciones
![Page 13: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/13.jpg)
Objetivos del proyecto
API pequeña (java.util) Número de interfaces Número de métodos por interface Bajo “peso conceptual” Construido sobre colecciones Java ya existentes (Vector, Hashtable) Conversión de y a arrays
![Page 14: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/14.jpg)
Las interfaces fundamentales
![Page 15: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/15.jpg)
La interface Collection
Representa un grupo de objetos
(elementos)
El JDK no provee ninguna implementación
directa de esta interface
Es usada para pasar colecciones como
argumentos de métodos o constructores
cuando se desee tener máxima generalidad
![Page 16: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/16.jpg)
La interface Collectionpublic interface Collection {// Operaciones basicasint size();//de queryboolean isEmpty();boolean contains(Object element);Iterator iterator();//de modificación o destructivosboolean add(Object element); // Opcional(*)boolean remove(Object element);//Opcional (*)// Operaciones completasboolean containsAll(Collection c);boolean addAll(Collection c); // Opcional (*)boolean removeAll(Collection c); // Opcional (*)boolean retainAll(Collection c); // Opcional (*)void clear(); // Opcional (*)
![Page 17: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/17.jpg)
La interface Collection
// Operaciones con arrays//puente de y hacia arraysObject[ ] toArray();Object[ ] toArray(Object a[ ]);}(*) retornan (salvo clear) true si la colección cambia como resultado de aplicar el método, false en caso contrario. Lanzan UnsupportedOperationException si la colección concreta no soporta esta operación.
![Page 18: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/18.jpg)
Interface Iterator
Provee un mecanismo “genérico” para iterar sobre cada uno de los elementos de una colección Creado por Collection.iterator() public interface Iterator {//en java.util boolean hasNext(); //retorna true si se //puede invocar a next() Object next();//retorna el próximo //elemento en la iteración void remove(); // Opcional; elimina el //elemento actual de la colección, sólo //puede llamarse si antes invoco next()} UNICA forma segura de modificar una colección durante la iteración
![Page 19: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/19.jpg)
Interface Iterator
Se puede pensar a Iterator como un cursor ubicado entre los elementos de la colección Permite iterar sólo hacia delante
hasNext() false
hasNext() true
next()
iterator
![Page 20: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/20.jpg)
Un ejemplo de Iterator
Cálculo del gasto total en sueldos de un depto. public double gasto(Collection c) { double gasto=0; Iterator it = c.iterator(); while (it.hasNext()) gasto += ((Empleado)it.next()).getsueldo();
} return gasto; }/*Sencillo algoritmo polimórfico aplicable a cualquier colección que implemente Collection */
![Page 21: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/21.jpg)
La interface Set
Colección que no puede contener elementos duplicados. Abstracción del concepto de matemático de conjunto Contiene los métodos heredados de Collection. Sólo añade restricciones para impedir añadir elementos duplicados. Los elementos no están ordenados
![Page 22: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/22.jpg)
Ejemplo 1: Set
import java.util.*;public class FindDups { public static void main(String args[]) { Set s = new HashSet();//referencia a la interface, no al tipo implementado
for (int i=0; i<args.length; i++) if (!s.add(args[i])) System.out.println(" duplicado: "+args[i]); System.out.println(s.size()+" palabras detectadas: "+s);}}
java FindDups i came i saw i leftduplicado: iduplicado: i4 palabras detectadas: [came, left, saw, i]
![Page 23: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/23.jpg)
Ejemplo 2: Set
import java.util.*;public class FindDups { public static void main(String args[]) { Set s = new TreeSet();//cambio el tipo de implementación
for (int i=0; i<args.length; i++) if (!s.add(args[i])) System.out.println(" duplicado: "+args[i]); System.out.println(s.size()+" palabras detectadas: "+s);}} java FindDups i came i saw i left
duplicado: iduplicado: i4 palabras detectadas: [came, i, left, saw]
![Page 24: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/24.jpg)
La interface List
Colección ordenada, también llamada secuencia Pueden contener elementos duplicados Nuevas operaciones: Acceso posicional. “Arrays dinámicos” que utilizan para el acceso un índice a partir de 0
Búsqueda
Iteración. Con ListIterator se puede iterar hacia atrás o hacia adelante Vista de rango
![Page 25: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/25.jpg)
La interface Listpublic interface List extends Collection {// Acceso PosicionalObject get(int index);Object set(int index, Object element); // Opt. (reemplazo)void add(int index, Object element); // Opt.Object remove(int index); // Opt.abstract boolean addAll(int index, Collection c);// Opt.// Busquedaint indexOf(Object o);int lastIndexOf(Object o);// IteracionListIterator listIterator();ListIterator listIterator(int index);List subList(int from, int to); // Vista de rango
![Page 26: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/26.jpg)
Ejemplo: List
![Page 27: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/27.jpg)
La interface Map Colección de pares clave/valor (tabla-diccionario) No puede contener claves duplicadas Una clave puede mapear a lo sumo un valor Todo objeto puede ser usado como un clave de hash public int Object.hashcode() Objetos iguales (equals()) deben producir el mismo hashcode Distintas vistas como colecciones: keySet- Set de claves del mapa values- Collection de valores del mapa entrySet- Set de pares claves/valor del mapa
![Page 28: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/28.jpg)
La interface Map
// Operaciones básicas put(Object, Object):Object; get(Object):Object; remove(Object):Object; containsKey(Object):boolean; containsValue(Object):boolean; size():int; isEmpty():boolean;
// Operaciones completas putAll(Map t):void; clear():void;
// Vistas como colecciones keySet():Set; values():Collection; entrySet():Set;
Map
![Page 29: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/29.jpg)
Ejemplo 1: Map Generar números al azar y contar cuántas veces sale cada uno. Clave=nro. Aleatorio generado (int), Valor= frec.
class Estadistico {
private static final Integer UNO = new Integer(1);
public static void main( String args[] ) {
Map tabla = new HashMap();
for(int i=0; i < 10000; i++) {// Generar un número entre 0 y 20
Integer num = new Integer((int)(Math.random()*20));
Integer freq = (Integer) tabla.get(num);
m.put(num,
(freq==null ? UNO : new Integer(freq.intValue( ) + 1)));}
System.out.println(tabla);}}
![Page 30: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/30.jpg)
Ejemplo 1: Map
class Estadistico {private static final Integer UNO = new Integer(1);public static void main( String args[] ) {Map tabla = new HashMap();for(int i=0; i < 10000; i++) {// Generar un número entre 0 y 20Integer num = new Integer((int)(Math.random()*20));Integer freq = (Integer) tabla.get(num);tabla.put(num,(freq==null ? UNO : new Integer(freq.intValue( ) + 1)));}System.out.println(tabla);}}
![Page 31: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/31.jpg)
Ejemplo 2: Iterar en un mapa
import java.util.*;public class Mapa {public static void main(String[] args) {
HashMap m = new HashMap(); m.put("Alabama", "Montgomery"); m.put("Tennesee", "Nashville"); m.put("Georgia", "Savannah"); // El siguiente valor reemplaza "Savannah": m.put("Georgia", "Atlanta"); System.out.println(m); iterate(m);
}public static void iterate(Map m)
{ System.out.println("Iterando..."); Set s = m.entrySet(); Iterator i = s.iterator(); while (i.hasNext()){//ref.a Map.Entry sólo con un iterador Map.Entry e = (Map.Entry)(i.next());//par clave-valor System.out.println(e); } }}
![Page 32: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/32.jpg)
Ejemplo 3: Salida resultante
{Alabama=Montgomery, Georgia=Atlanta, Tennesee=Nashville}
Iterando...
Alabama=Montgomery
Georgia=Atlanta
Tennesee=Nashville
![Page 33: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/33.jpg)
Ordenamiento de objetos
Puede definirse un “orden natural” para una clase haciendo que implemente la interface Comparable Objetos de las clases que la implementen se pueden ordenar automáticamente Muchas clases del JDK la implementan:
signed numericalDouble
signed numericalInteger lexicographicString
chronologicalDate
![Page 34: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/34.jpg)
Ordenamiento de objetos Interface Comparable
public interface Comparable {public int compareTo(Object o);
} Compara el objeto con el que se invoca el método compareTo con o Retorna: <0 si this precede a o 0 si this y o es igual a (equals()) >0 si o precede a this Un orden natural no siempre es suficiente Es necesario otro orden distinto al “natural” Los objetos a ordenar no implementan Comparable
![Page 35: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/35.jpg)
Ordenamiento de objetos
Interface Comparator
public interface Comparator { public int compare(Object o1, Object o2); }
![Page 36: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/36.jpg)
Ejemplo: Comparable
import java.util.*;public class Name implements Comparable { private String firstName, lastName; public Name(String firstName, String lastName) { if (firstName==null || lastName==null) throw new NullPointerException(); this.firstName = firstName; this.lastName = lastName; } public String firstName() {return firstName;} public String lastName() {return lastName;}public boolean equals(Object o) { if (!(o instanceof Name)) return false; Name n = (Name)o;
![Page 37: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/37.jpg)
Ejemplo: Comparable
return n.firstName.equals(firstName) && n.lastName.equals(lastName); }public int hashCode() { return 31*firstName.hashCode() + lastName.hashCode(); } public String toString() {return firstName + " " + lastName;} public int compareTo(Object o) { Name n = (Name)o; int lastCmp = lastName.compareTo(n.lastName); return (lastCmp!=0 ? lastCmp : firstName.compareTo(n.firstName)); }}
![Page 38: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/38.jpg)
Ejemplo: Comparable
class NameSort { public static void main(String args[]) { Name n[] = { new Name("John", "Lennon"),new Name("Karl", "Marx"), new Name("Groucho", "Marx"), new Name("Oscar", "Grouch")}; List l = Arrays.asList(n); Collections.sort(l); System.out.println(l);}}
[Oscar Grouch, John Lennon, Groucho Marx, Karl Marx]
![Page 39: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/39.jpg)
Interface SortedSet
Conjunto que mantiene los elementos ordenados en forma ascendente los elementos deben implementar Comparable o, se debe suministrar un Comparator en el momento de la creación los elementos deben ser mutuamente comparables el ordenamiento debe ser consistente con equals
![Page 40: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/40.jpg)
Interface SortedSet
Operaciones: Iterator atraviesa SortedSet en
orden
Operaciones adicionales:
de vista de rango
se puede retornar el primer o el último
elemento
acceso al Comparator
![Page 41: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/41.jpg)
Interface SortedMap
Mapa que mantiene sus claves en orden ascendente las claves deben implementar Comparable o, se debe suministrar un Comparator en el momento de la creación las claves deben ser mutuamente comparables el ordenamiento debe ser consistente con equals
![Page 42: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/42.jpg)
Interface SortedMap Operaciones
Iterator atraviesa el SortedMap en
cualquiera de sus vistas de colección en
orden ascendente de las claves
Operaciones adicionales:
vista de rango
recuperar valores extremos
acceso al Comparator
![Page 43: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/43.jpg)
Implementaciones
Son los objetos reales usados para almacenar los elementos Implementan las interfaces fundamentales del JCF Hay tres clases de implementaciones de propósito general envolturas de conveniencia Clases abstractas
![Page 44: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/44.jpg)
Implementaciones de propósito general
Interface Implementación Histórico
Set HashSet TreeSet
List ArrayList LinkedList VectorStack
Map HashMap TreeMap HashTable
![Page 45: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/45.jpg)
Implementaciones
Collection
Set
SortedSetHashSet
TreeSet
List
ArrayList LinkedList
Vector
Stack
Map
Hashtable HashMap
SortedMap
TreeMap
![Page 46: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/46.jpg)
Colecciones y clases abstractas
Collection
Set
List
AbstractCollection
AbstractSet
AbstractList
Map
AbstractMap
![Page 47: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/47.jpg)
Colecciones y clases abstractas
AbstractList
HashMap
ArrayList
AbstractMap
List
Cloneable
Serializable
Map
![Page 48: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/48.jpg)
Constructores
Cada clase que implementa Collection tiene un constructor con un argumento de cualquier tipo que implemente Collection Ej.: List myVector = new Vector(myTreeSet); En forma similar, casi todas las clases que implementan Map tienen un constructor con un argumento de cualquier tipo que implemente Map Ej.: Map myMap=new TreeMap(myHashtable); Por tanto, es muy fácil cambiar un tipo de colección por otro
![Page 49: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/49.jpg)
Algoritmos
Algoritmos polimórficos proveen funcionalidad reusable definidos como métodos static en la clase Collections Algoritmos provistos (casi todos para List) ordenamiento barajado (shuffling) manipulación de datos inversión, llenado, copia búsqueda y valores extremos (min/max)
![Page 50: Informática III Colecciones en Java Lectura adicional: interface.html](https://reader036.vdocuments.mx/reader036/viewer/2022062315/5665b45e1a28abb57c90ea03/html5/thumbnails/50.jpg)
Elegir una colección depende de...
Si es de tamaño fijo o no Si los elementos tienen un orden natural o no Si se desea insertar/borrar elementos en
cualquier posición o sólo al principio/final Si será necesario hacer búsquedas en una colección con gran cantidad de datos, en forma rápida Si el acceso a los elementos es aleatorio o secuencial