Definición:
Los contenedores son el modo de agrupar objetos. También llamados colecciones (Collection). Representa a un conjunto de ítems, un conjunto de objetos, que pueden ser homogéneos o no. Por ejemplo, una agenda es una colección de datos de personas.
La interfaz Collection
La interfaz collection es la superinterfaz de donde heredan la mayoría de las interfaces utilizadas para el manejo de las colecciones. Es la interfaz raíz de la jerarquía de interfaces.
La interfaz collection forma parte del Collection Framework, un conjunto de interfaces y clases que representan distintos modos de agrupar objetos, según distintas políticas de manejo de memoria o acceso a ellos.
Representan un conjunto de objetos, también llamados elementos. Una clase que quiera comportarse como una Collection deberá implementar esta interfaz, por lo tanto sus métodos.
Listas
La interfaz List
Es una subinterfaz de Collection. También es llamada Secuencia. Puede contener objetos duplicados y objetos nulos. Soporta manipulación de elementos vía índices a través del método: get(int índice), que permite obtener el elemento en la posición índice de la lista.
También puede obtenerse el índice en el cual esta almacenado un determinado objeto, mediante el método: int indexOf(unObjeto).
También permite trabajar con subconjunto de elementos de la lista con el método: List subList(int indiceDesde, int indiceHasta).
Los contenedores son el modo de agrupar objetos. También llamados colecciones (Collection). Representa a un conjunto de ítems, un conjunto de objetos, que pueden ser homogéneos o no. Por ejemplo, una agenda es una colección de datos de personas.
La interfaz Collection
La interfaz collection es la superinterfaz de donde heredan la mayoría de las interfaces utilizadas para el manejo de las colecciones. Es la interfaz raíz de la jerarquía de interfaces.
La interfaz collection forma parte del Collection Framework, un conjunto de interfaces y clases que representan distintos modos de agrupar objetos, según distintas políticas de manejo de memoria o acceso a ellos.
Representan un conjunto de objetos, también llamados elementos. Una clase que quiera comportarse como una Collection deberá implementar esta interfaz, por lo tanto sus métodos.
Listas
La interfaz List
Es una subinterfaz de Collection. También es llamada Secuencia. Puede contener objetos duplicados y objetos nulos. Soporta manipulación de elementos vía índices a través del método: get(int índice), que permite obtener el elemento en la posición índice de la lista.
También puede obtenerse el índice en el cual esta almacenado un determinado objeto, mediante el método: int indexOf(unObjeto).
También permite trabajar con subconjunto de elementos de la lista con el método: List subList(int indiceDesde, int indiceHasta).
Las listas mas conocidas en java son: ArrayList, Vectir y
Stack.
Clase ArrayList
Clase ArrayList
Es una clase que implementa la
interfaz Collection. Representa a un arreglo de tamaño variable. Los métodos
mas comúnmente utilizados son add() , get() , size() y remove(). No maneja
sincronización.
Public Class Auto {
Prívate String patente;
Public
Auto(String patente){
This.patente
= patente;
}
Public Class Programa{
Public Programa(){
}
Public
static void main (String [] args){
List
lista = new ArrayList();
lista.add(new
Auto(“123”);
lista.add(new
Auto(“456”);
for (
int I = 0; I < lista.size(); i++){
System.out.println(lista.get(i));
}
}
}
Clase
Vector
Es semánticamente igual a la
clase ArrayList. A diferencia de la clase ArrayList maneja sincronización.
La interfaz Set
Es una subinterfaz de Collection, donde no puede haber elementos repetidos, y cuyos elementos no se almacenan necesariamente siguiendo un orden particular.
Clase HashSet
La interfaz Set
Es una subinterfaz de Collection, donde no puede haber elementos repetidos, y cuyos elementos no se almacenan necesariamente siguiendo un orden particular.
Clase HashSet
Un HashSet es una estructura de datos que contiene un conjunto de objetos. Es una implementacion de Set y permite buscar un objeto dentro del conjunto de forma rápida y fácil. Internamente gestiona un array y guarda los objetos utilizando un índice calculado con un código hash del objeto.
El nombre HASH, hace
referencia a una tecnica de organizacion de archivos llamada hashing o
"dispersion" en el cual se almacenan registrso en una direccion del
archivo que es generada por una funcion que se aplica sobre la llave del
registro.
Todos los objetos de Java pueden producir un código de tipo hash, y HashCode() es un método de la clase raíz Object. Un HashSet toma un hashCode() del objeto y lo utiliza para localizar rápidamente la clave. Esto redunda en una mejora dramática de rendimiento.
Todos los objetos de Java pueden producir un código de tipo hash, y HashCode() es un método de la clase raíz Object. Un HashSet toma un hashCode() del objeto y lo utiliza para localizar rápidamente la clave. Esto redunda en una mejora dramática de rendimiento.
- Los elementos de un HashSet no están ordenados
- Para añadir un elemento al HashSet se utiliza el método add(Object obj).
- Para borrar un elemento se utiliza remove(Object obj).
- Para borrar todos los elementos se utiliza clear().
- El tamaño del HashSet se puede obtener con la función size()
- Para añadir un elemento al HashSet se utiliza el método add(Object obj).
- Para borrar un elemento se utiliza remove(Object obj).
- Para borrar todos los elementos se utiliza clear().
- El tamaño del HashSet se puede obtener con la función size()
Set<String> hs = new HashSet<String>();
String [] nombres =
{"Jorge","Pepe","Juan","Ale"};
for
(int i = 0; i < nombres.length; i++) {
hs.add(nombres[i]);
}
System.out.println("HashSet");
System.out.println(hs.toString());
System.out.println("");
System.out.println("--------Metodo
Remove--------");
hs.remove("Pepe");
System.out.println(hs.toString());
System.out.println("");
System.out.println("--------Metodo Clear---------");
hs.clear();
System.out.println(hs.toString());
La interfaz SortedSet
Es una subinterfaz de la interfaz Set, es un conjunto de elementos ordenados. Algunos métodos importantes con los que permite trabajar son:
Es una subinterfaz de la interfaz Set, es un conjunto de elementos ordenados. Algunos métodos importantes con los que permite trabajar son:
-Objetct first() à Devuelve el primer
valor de la lista
-Object last() à Devuelve el ultimo valor de la lista
-SortedSet subSet(Object ElementoDesde, Object ElementoHasta) à Devuelve una sub SortedSet desde el elemento marcado como principio hasta el elemento marcado como fin.
-SortedSet headSet(Object ElementoHasta) à Devuelve una sub SortedSet desde el principio hasta el elemento marcado como fin.
-SortedSet tailSet(Object ElementoDesde) à Devuelve una sub SortedSet desde el fin hasta el element marcadado como principio.
Clase TreeSet
Un TreeSet es una implementacion de SortedSet, mantiene los objetos ordenados en lo que se conoce como un red-black tree, es decir, en un árbol binario balanceado (cada padre tiene como máximo 2 hijos, y cuando se inserta una entrada se autobalancea de forma que quede un árbol binario simétrico).
-Object last() à Devuelve el ultimo valor de la lista
-SortedSet subSet(Object ElementoDesde, Object ElementoHasta) à Devuelve una sub SortedSet desde el elemento marcado como principio hasta el elemento marcado como fin.
-SortedSet headSet(Object ElementoHasta) à Devuelve una sub SortedSet desde el principio hasta el elemento marcado como fin.
-SortedSet tailSet(Object ElementoDesde) à Devuelve una sub SortedSet desde el fin hasta el element marcadado como principio.
Clase TreeSet
Un TreeSet es una implementacion de SortedSet, mantiene los objetos ordenados en lo que se conoce como un red-black tree, es decir, en un árbol binario balanceado (cada padre tiene como máximo 2 hijos, y cuando se inserta una entrada se autobalancea de forma que quede un árbol binario simétrico).
Un TreeSet permite hacer
búsquedas rápidas. No tanto como un HashSet, pero el TreeSet tiene la ventaja
de estar ordenado por clave.
SortedSet<String> arbol = new TreeSet();
SortedSet<String> arbol = new TreeSet();
SortedSet<String>
arbol2 = new TreeSet();
String [] nombres =
{"Jorge","Pepe","Juan","Ale"};
for
(int i = 0; i < nombres.length; i++) {
arbol.add(nombres[i]);
}
System.out.println("Arbol");
System.out.println(arbol.toString());
System.out.println("");
System.out.println("--------Metodos
first y last--------");
System.out.println("Primer
elemento del arbol: " + arbol.first());
System.out.println("Ultimo elemento
del arbol: " + arbol.last());
System.out.println("");
System.out.println("--------Metodo
HeadSet--------");
arbol2
= arbol.headSet("Pepe");
System.out.println(arbol2.toString());
System.out.println("");
System.out.println("--------Metodo
TailSet---------");
arbol2
= arbol.tailSet("Jorge");
System.out.println(arbol2.toString());
Mapas
La interfaz Map
Es una interfaz a la misma altura, jerárquicamente hablando, de la interfaz Collection. Permite el almacenamiento de listas de valores (llave-lista de valores) y no puede contener valores duplicados (llaves). Algunos métodos importantes con los que permite trabajar son:
-Object put
(Object llave, Object valor): inserta un objeto que se recibe en el parámetro
valor bajo el valor de la llave específica.
-Object get (Object llave): Retorna el valor
que se encuentra asociado a la llave que se pasa por parámetro
-boolean containsKey(Object llave): Devuelve
verdadero, si el mapa contiene como llave al objeto especificado como parámetro.
-boolean containsValue(Object valor): Devuelve
verdadero, si el mapa contiene como uno de sus valores al objeto especificado
como parámetro.
-Collection Values():Retorna una colección con todos los valores
almacenados en el mapa.
Clase HashMap
HashMap es una implementacion de Map y funciona parecida a las HashTable, es una colección de objetos pero clave-valor. Es decir, para cada objeto que insertas debe existir una clave única. Una HashMap, a diferencia de las HashTable admiten valores nulos tanto en la clave como en el valor.
El nombre HASH, hace
referencia a una tecnica de organizacion de archivos llamada hashing o
"dispersion" en el cual se almacenan registrso en una direccion del
archivo que es generada por una funcion que se aplica sobre la llave del
registro.
Si se observa lo que hace un get(), parecerá bastante lento hacerlo buscando a través de la clave, por ej. de un ArrayList. Es aquí donde un HashMap acelera considerablemente las cosas. En vez de hacer una búsqueda lenta de la clave, usa un valor especial denominado "código de tipo hash". Ésta es una manera de tomar cierta información del objeto en cuestión y convertirlo en un entero "relativamente único" para ese objeto.
Todos los objetos de Java pueden producir un código de tipo hash, y HashCode() es un método de la clase raíz Object. Un HashMap toma un hashCode() del objeto y lo utiliza para localizar rápidamente la clave. Esto redunda en una mejora dramática de rendimiento.
// Definir un HashMap
Si se observa lo que hace un get(), parecerá bastante lento hacerlo buscando a través de la clave, por ej. de un ArrayList. Es aquí donde un HashMap acelera considerablemente las cosas. En vez de hacer una búsqueda lenta de la clave, usa un valor especial denominado "código de tipo hash". Ésta es una manera de tomar cierta información del objeto en cuestión y convertirlo en un entero "relativamente único" para ese objeto.
Todos los objetos de Java pueden producir un código de tipo hash, y HashCode() es un método de la clase raíz Object. Un HashMap toma un hashCode() del objeto y lo utiliza para localizar rápidamente la clave. Esto redunda en una mejora dramática de rendimiento.
// Definir un HashMap
HashMap
global = new HashMap();
//
Insertar valores "key"-"value" al HashMap
global.put("Doctor",
"(+52)-4000-5000");
global.put("Casa",
"(888)-4500-3400");
global.put("Hermano",
"(575)-2042-3233");
global.put("Hermana",
"(421)-1010-0020");
global.put("Suegros",
"(334)-6105-4334");
global.put("Oficina",
"(304)-5205-8454");
global.put("Ana C.",
"(756)-1205-3454");
global.put("Luis G.",
"(55)-9555-3270");
global.put("Oficina 2",
"(874)-2400-8600");
//Uso el StringTokenizer para que cada
vez que encuentre una coma haga un salto de línea
//Sino van a salir los valores en una
sola línea separados por coma
StringTokenizer tk = new StringTokenizer(global.toString(), ",");
while(tk.hasMoreTokens()){
System.out.println(tk.nextToken());
}
La interfaz SortedMap
Es una subinterfaz de la interfaz Map, es un Mapa cuyas claves están ordenadas. Maneja los mismos métodos que la SortedSet, los parámetros de los métodos es referido a las llaves(keys).
La clase TreeMap
Es una implementacion de SortedMap, utilizando un árbol binario equilibrado que mantiene sus elementos ordenados por clave. Es útil para conjuntos de datos ordenados que requieren una búsqueda por clave moderadamente rápida.
La interfaz SortedMap
Es una subinterfaz de la interfaz Map, es un Mapa cuyas claves están ordenadas. Maneja los mismos métodos que la SortedSet, los parámetros de los métodos es referido a las llaves(keys).
La clase TreeMap
Es una implementacion de SortedMap, utilizando un árbol binario equilibrado que mantiene sus elementos ordenados por clave. Es útil para conjuntos de datos ordenados que requieren una búsqueda por clave moderadamente rápida.
//Definir un TreeMap
TreeMap global = new TreeMap();
//
Insertar valores "key"-"value" al TreeMap
global.put("Doctor", "(+52)-4000-5000");
global.put("Casa",
"(888)-4500-3400");
global.put("Hermano",
"(575)-2042-3233");
global.put("Hermana",
"(421)-1010-0020");
global.put("Suegros",
"(334)-6105-4334");
global.put("Oficina",
"(304)-5205-8454");
global.put("Ana C.",
"(756)-1205-3454");
global.put("Luis G.",
"(55)-9555-3270");
global.put("Oficina 2",
"(874)-2400-8600");
//Uso el StringTokenizer para que cada
vez que encuentre una coma haga un salto de line
//Sino van a salir los valores en una
sola linea separados por coma
StringTokenizer tk;
tk= new StringTokenizer(global.toString(), ",");
while(tk.hasMoreTokens()){
System.out.println(tk.nextToken());
}
System.out.println("--------Metodo subMap--------");
//Muestra
un subMap de A a M
SortedMap am = global.subMap("A", "M");
tk= new StringTokenizer(am.toString(), ",");
while(tk.hasMoreTokens()){
System.out.println(tk.nextToken());
}
System.out.println("--------Metodo tailMap--------");
//Muestra
de la letra N en adelante
SortedMap nz = global.tailMap("N");
tk= new StringTokenizer(nz.toString(), ",");
while(tk.hasMoreTokens()){
System.out.println(tk.nextToken());
}
No hay comentarios:
Publicar un comentario