Vous êtes sur la page 1sur 38

Toggle navigation

Info. Artculo

Entradas
Preguntas?

Videos
Libros

Buscar

Ricardo Moya 1 - Mar - 2014


Compartir en:

Categora:

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

Categora:

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

Lenguajes de Programacin

Tags: estructura de datos HashMap java Map programacin TreeMap

Map en Java, con ejemplos


open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

La Interface Map (java.io.Map) en Java, nos permite representar una


estructura de datos para almacenar pares clave/valor; de tal manera que para una clave solamente tenemos un
valor. Esta estructura de datos tambin es conocida en otros lenguajes de programacin como Diccionarios,
aunque en cada lenguajes esta estructura de datos tiene sus matices. Al igual que dijimos en la entrada de
ArrayList en Java, con ejemplos los Maps en java tienen implimentada por debajo toda la teora de las estructuras
de datos de los Arboles (AVL, B, B+, B*) por tanto permiten aadir, eliminar y modificar elementos de forma
trasparente para el programador. Antes de pasar a explicar el manejo de los Map, dejamos un enlace al JavaDoc,
pulsando AQUI.
Antes de todo, decir que el cdigo de todos los ejemplos que se ponen a continuacin los podis descargar
pulsando AQUI.
Los principales mtodos para trabajar con los Map son los siguientes:
// Declaracin de un Map (un HashMap) con clave "Integer" y Valor "String". Las claves pueden
ser de cualquier tipo de objetos, aunque los ms utilizados como clave son los objetos
predefinidos de Java como String, Integer, Double ... !!!!CUIDADO los Map no permiten datos
atmicos
Map<Integer, String> nombreMap = new HashMap<Integer, String>();
nombreMap.size(); // Devuelve el numero de elementos del Map
nombreMap.isEmpty(); // Devuelve true si no hay elementos en el Map y false si si los hay
open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

nombreMap.put(K clave, V valor); // Aade un elemento al Map


nombreMap.get(K clave); // Devuelve el valor de la clave que se le pasa como parmetro o
'null' si la clave no existe
nombreMap.clear(); // Borra todos los componentes del Map
nombreMap.remove(K clave); // Borra el par clave/valor de la clave que se le pasa como
parmetro
nombreMap.containsKey(K clave); // Devuelve true si en el map hay una clave que coincide con K
nombreMap.containsValue(V valor); // Devuelve true si en el map hay un Valor que coincide con
V
nombreMap.values(); // Devuelve una "Collection" con los valores del Map

Otro elemento importante a la hora de trabajar con los Maps (aunque no lo es tanto como a la hora de trabajar con
los ArrayList) son los Iteradores (Iterator). Los Iteradores sirven para recorrer los Map y poder trabajar con ellos.
Los Iteradores solo tienen tres mtodos que son el hasNext() para comprobar que siguen quedando elementos
en el iterador, elnext() para que nos de el siguiente elemento del iterador; y el remove() que sirve para eliminar
el elemento del Iterador. En realidad se puede prescindir de los iteradores para trabajar con los Map ya que la gran
ventaja de los Map frente a los ArrayList, es que estos tienen una clave asociada al objeto y se les puede buscar
por la clave, aunque nunca esta de ms saber utilizar los iteradores para manejar los Map.
Antes de seguir con ejemplos, os habris dado cuenta que hemos empezado la entrada diciendo que Map es una
Interface y por tanto se deben de implementar los mtodos de la interface. Java ya tiene implementadas varias
clases Map. No vamos a explicar todas, pero si las tres que consideramos ms importantes y tiles para que
veis la diferencia como son la clase HashMap, TreeMap y LinkedHashMap. La diferencia principal de estas 3
clases es la forma o el orden en las que guardan los valores en el Map. Si disteis en la carrera de Ingeniera
Informtica (o derivados) toda esa teora de arboles (que no vamos a recordar aqu), verais que la gran diferencia
entre los arboles AVL, B, B+ y B* es la forma en la que guardan los datos para despus optimizar las altas, bajas,
modificaciones y consultas de los valores. Pues bien toda esa teora en esta entrada para nosotros es
trasparente, pero esta bien que veamos estas tres clases para que en funcin de vuestro problema elijis la mejor
clase:
HashMap: Los elementos que inserta en el map no tendrn un orden especfico. No aceptan claves
open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

duplicadas ni valores nulos.


TreeMap: El Mapa lo ordena de forma natural. Por ejemplo, si la clave son valores enteros (como luego
veremos), los ordena de menos a mayor.
LinkedHashMap: Inserta en el Map los elementos en el orden en el que se van insertando; es decir, que no
tiene una ordenacin de los elementos como tal, por lo que esta clase realiza las bsquedas de los
elementos de forma ms lenta que las dems clases.
Visto esto vamos a poner un ejemplo de estas 3 clases y como ordena los elementos. Para este ejemplo vamos a
tener un Map en el que la clave va a ser el dorsal de los jugadores de ftbol de la seleccin espaola que jugaron
de titulares la final de la copa del mundo de 2010, y su valor va a ser su nombre.

Con un HashMap
Map<Integer, String> map = new HashMap<Integer, String>();
map.put(1, "Casillas");
map.put(15, "Ramos");
map.put(3, "Pique");
map.put(5, "Puyol");
map.put(11, "Capdevila");
map.put(14, "Xabi Alonso");
map.put(16, "Busquets");
map.put(8, "Xavi Hernandez");
map.put(18, "Pedrito");
map.put(6, "Iniesta");
map.put(7, "Villa");
// Imprimimos el Map con un Iterador
Iterator it = map.keySet().iterator();
while(it.hasNext()){
Integer key = it.next();
System.out.println("Clave: " + key + " -> Valor: " + map.get(key));
}

El resultado que tenemos es el siguiente, en el que vemos que nos da los objetos sin un orden lgico:
Clave: 16 -> Valor: Busquets
Clave: 1 -> Valor: Casillas
open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

Clave:
Clave:
Clave:
Clave:
Clave:
Clave:
Clave:
Clave:
Clave:

18
3
5
6
7
8
11
14
15

->
->
->
->
->
->
->
->
->

Valor:
Valor:
Valor:
Valor:
Valor:
Valor:
Valor:
Valor:
Valor:

Pedrito
Pique
Puyol
Iniesta
Villa
Xavi Hernandez
Capdevila
Xabi Alonso
Ramos

Con un TreeMap
Map<Integer, String> treeMap = new TreeMap<Integer, String>();
treeMap.put(1, "Casillas");
treeMap.put(15, "Ramos");
treeMap.put(3, "Pique");
treeMap.put(5, "Puyol");
treeMap.put(11, "Capdevila");
treeMap.put(14, "Xabi Alonso");
treeMap.put(16, "Busquets");
treeMap.put(8, "Xavi Hernandez");
treeMap.put(18, "Pedrito");
treeMap.put(6, "Iniesta");
treeMap.put(7, "Villa");
// Imprimimos el Map con un Iterador que ya hemos instanciado anteriormente
it = treeMap.keySet().iterator();
while(it.hasNext()){
Integer key = it.next();
System.out.println("Clave: " + key + " -> Valor: " + treeMap.get(key));
}

El resultado que tenemos es el siguiente en el que vemos que nos ordena los objetos por clave en orden natural:
Clave:
Clave:
Clave:
Clave:
Clave:

1
3
5
6
7

->
->
->
->
->

Valor:
Valor:
Valor:
Valor:
Valor:

open in browser PRO version

Casillas
Pique
Puyol
Iniesta
Villa
Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

Clave:
Clave:
Clave:
Clave:
Clave:
Clave:

8
11
14
15
16
18

->
->
->
->
->
->

Valor:
Valor:
Valor:
Valor:
Valor:
Valor:

Xavi Hernandez
Capdevila
Xabi Alonso
Ramos
Busquets
Pedrito

Con un LinkedHashMap
Map<Integer, String> linkedHashMap = new LinkedHashMap<Integer, String>();
linkedHashMap.put(1, "Casillas");
linkedHashMap.put(15, "Ramos");
linkedHashMap.put(3, "Pique");
linkedHashMap.put(5, "Puyol");
linkedHashMap.put(11, "Capdevila");
linkedHashMap.put(14, "Xabi Alonso");
linkedHashMap.put(16, "Busquets");
linkedHashMap.put(8, "Xavi Hernandez");
linkedHashMap.put(18, "Pedrito");
linkedHashMap.put(6, "Iniesta");
linkedHashMap.put(7, "Villa");
// Imprimimos el Map con un Iterador que ya hemos instanciado anteriormente
it = linkedHashMap.keySet().iterator();
while(it.hasNext()){
Integer key = it.next();
System.out.println("Clave: " + key + " -> Valor: " + linkedHashMap.get(key));
}

El resultado que tenemos es el siguiente en el que vemos que nos ordena los objetos tal y como los hemos ido
introduciendo:
Clave:
Clave:
Clave:
Clave:
Clave:
Clave:
Clave:

1
15
3
5
11
14
16

->
->
->
->
->
->
->

Valor:
Valor:
Valor:
Valor:
Valor:
Valor:
Valor:

open in browser PRO version

Casillas
Ramos
Pique
Puyol
Capdevila
Xabi Alonso
Busquets
Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

Clave:
Clave:
Clave:
Clave:

8
18
6
7

->
->
->
->

Valor:
Valor:
Valor:
Valor:

Xavi Hernandez
Pedrito
Iniesta
Villa

Una vez que hemos visto las diferencias entre unas clases de Map y otras, vamos a ver el funcionamiento de los
mtodos que hemos mencionado al principio:
System.out.println("********* Trabajando con los mtodos de Map *********");
System.out.println("Mostramos el numero de elementos que tiene el TreeMap: treeMap.size() =
"+treeMap.size());
System.out.println("Vemos si el TreeMap esta vacio : treeMap.isEmpty() = "+treeMap.isEmpty());
System.out.println("Obtenemos un elemento del Map pasandole la clave 6: treeMap.get(6) =
"+treeMap.get(6));
System.out.println("Borramos un elemento del Map el 18 (porque fue sustituido):
treeMap.remove(18)"+treeMap.remove(18));
System.out.println("Vemos que pasa si queremos obtener la clave 18 que ya no existe:
treeMap.get(18) = "+treeMap.get(18));
System.out.println("Vemos si existe un elemento con la clave 18: treeMap.containsKey(18) =
"+treeMap.containsKey(18));
System.out.println("Vemos si existe un elemento con la clave 1: treeMap.containsKey(1) =
"+treeMap.containsKey(1));
System.out.println("Vemos si existe el valo 'Villa' en el Map: treeMap.containsValue("Villa")
= "+treeMap.containsValue("Villa"));
System.out.println("Vemos si existe el valo 'Ricardo' en el Map:
treeMap.containsValue("Ricardo") = "+treeMap.containsValue("Ricardo"));
System.out.println("Borramos todos los elementos del Map: treeMap.clear()");treeMap.clear();
System.out.println("Comprobamos si lo hemos eliminado viendo su tamao: treeMap.size() =
"+treeMap.size());
System.out.println("Lo comprobamos tambien viendo si esta vacio treeMap.isEmpty() =
"+treeMap.isEmpty());

Como salida para todos los mtodos ejecutados obtendremos la siguiente:


********* Trabajando con los mtodos de Map *********
open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

Mostramos el numero de elementos que tiene el TreeMap: treeMap.size() = 11


Vemos si el TreeMap esta vacio : treeMap.isEmpty() = false
Obtenemos un elemento del Map pasandole la clave 6: treeMap.get(6) = Iniesta
Borramos un elemento del Map el 18 (porque fue sustituido): treeMap.remove(18)Pedrito
Vemos que pasa si queremos obtener la clave 18 que ya no existe: treeMap.get(18) = null
Vemos si existe un elemento con la clave 18: treeMap.containsKey(18) = false
Vemos si existe un elemento con la clave 1: treeMap.containsKey(1) = true
Vemos si existe el valo 'Villa' en el Map: treeMap.containsValue("Villa") = true
Vemos si existe el valo 'Ricardo' en el Map: treeMap.containsValue("Ricardo") = false
Borramos todos los elementos del Map: treeMap.clear()
Comprobamos si lo hemos eliminado viendo su tamao: treeMap.size() = 0
Lo comprobamos tambien viendo si esta vacio treeMap.isEmpty() = true

Otra de las cosas ms tiles al trabajar con los Map es el recorrerlos como si fuese un ArrayList, y eso lo
conseguimos de la siguiente forma. Si queremos obtener los pares clave/valor o solo las claves o los valores por
separado (cuidado ahora estamos trabajando con el LinkedHashMap del ejemplo):
System.out.println("Foreach: Forma alternativa para recorrer los Map mostrando la Clave y el
valor:");
for (Entry<Integer, String> jugador : linkedHashMap.entrySet()){
Integer clave = jugador.getKey();
String valor = jugador.getValue();
System.out.println(clave+" -> "+valor);
}

Como salida a este fragmento de cdigo tenemos lo siguiente (que son a los jugadores por orden de insercin en
el Map):
Foreach: Forma alternativa para recorrer los Map mostrando la Clave y el valor:
1 -> Casillas
15 -> Ramos
3 -> Pique
5 -> Puyol
11 -> Capdevila
open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

14
16
8
18
6
7

->
->
->
->
->
->

Xabi Alonso
Busquets
Xavi Hernandez
Pedrito
Iniesta
Villa

Como vemos, lo que hace este foreach es ir dndonos uno a uno cada par clave valor. Por tanto, si obtuvisemos
solo el valor, tendramos el mismo efecto que si estuvisemos trabajando con ArrayList o Colecciones.
Visto las 3 clases ms utilizadas del los Map y los mtodos ms importantes, vamos a poner un ejemplo ms de
como trabajar con los Map. Pero en esta ocasin el valor no ser un objeto predefinido de Java, sino que ser un
objeto de la clase JugadorSeleccion que mostramos a continuacin:
class JugadorSeleccion {
private int dorsal;
private String nombre;
private String demarcacion;
public JugadorSeleccion() {
}
public JugadorSeleccion(int dorsal, String nombre, String demarcacin) {
this.dorsal = dorsal;
this.nombre = nombre;
this.demarcacion = demarcacin;
}
public int getDorsal() {
return dorsal;
}
public void setDorsal(int dorsal) {
this.dorsal = dorsal;
open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getDemarcacin() {
return demarcacion;
}
public void setDemarcacin(String demarcacin) {
this.demarcacion = demarcacin;
}
@Override
public String toString() {
return this.dorsal+"
}

--

"+this.nombre+"

--

"+this.demarcacion;

En este ejemplo nos vamos a crear un TreeMap en la que la clave ser el nombre del jugador y el valor ser un
objeto de la clase JugadorSeleccion. El TreeMap lo declaramos de la siguiente forma y metemos en l los
siguientes objetos:
System.out.println("********* TreeMap con Objetos y como Clave un String *********");
Map <String, JugadorSeleccion> jugadores = new TreeMap<String, JugadorSeleccion>();
jugadores.put("Casillas", new JugadorSeleccion(1, "Casillas", "Portero"));
jugadores.put("Ramos", new JugadorSeleccion(15, "Ramos", "Lateral Derecho"));
jugadores.put("Pique", new JugadorSeleccion(13, "Pique", "Central"));
jugadores.put("Puyol", new JugadorSeleccion(5, "Puyol", "Central"));
open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

jugadores.put("Capdevila", new JugadorSeleccion(11, "Capdevila", "Lateral Izquierdo"));


jugadores.put("Xabi", new JugadorSeleccion(14, "Xabi Alonso", "Medio Centro"));
jugadores.put("Busquets", new JugadorSeleccion(16, "Busquets", "Medio Centro"));
jugadores.put("Xavi", new JugadorSeleccion(8, "Xavi Hernandez", "Centro Campista"));
jugadores.put("Pedrito", new JugadorSeleccion(18, "Pedrito", "Interior Izquierdo"));
jugadores.put("Iniesta", new JugadorSeleccion(6, "Iniesta", "Interior Derecho"));
jugadores.put("Villa", new JugadorSeleccion(7, "Villa", "Delantero"));

Si hacemos un foreach de este TreeMap, vamos a ver que el Map va a estar ordenado por orden alfabtico de la
clave. Es decir, por el nombre de los jugadores:
for (Entry<String, JugadorSeleccion> jugador : jugadores.entrySet()){
String clave = jugador.getKey();
JugadorSeleccion valor = jugador.getValue();
System.out.println(clave+" -> "+valor.toString());
}

Como resultado de esta ejecucin del cdigo tenemos el siguiente:


Busquets
Capdevila
Casillas
Iniesta
Pedrito
Pique
Puyol
Ramos
Villa
Xabi
Xavi

->
->
->
->
->
->
->
->
->
->
->

16
11
1
6
18
13
5
15
7
14
8

------------

Busquets
Capdevila
Casillas
Iniesta
Pedrito
Pique
Puyol
Ramos
Villa
Xabi Alonso
Xavi Hernandez

------------

Medio Centro
Lateral Izquierdo
Portero
Interior Derecho
Interior Izquierdo
Central
Central
Lateral Derecho
Delantero
Medio Centro
Centro Campista

Si nos definimos nuestras propias clases y trabajamos con ellas en los Map, hay que tener muy claro una
importante premisa en la programacin No es lo mismo Iguales que Lo mismo . Esto quiere decir, que si
open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

nos creamos un nuevo objeto de la clase JugadorSeleccin cuyos atributos son Iguales que un objeto que se
encuentre en el Map y ejecutamos el mtodo ContainsValue nos devolver un false como una casa. Porque
aunque sean objetos iguales, no son los mismo objetos, y por tanto, no lo contendr el Map. Es decir, que si
hacemos lo siguiente nos devolver un false, debido a que nuestro objeto villla no ser el mismo que est en el
Map:
// Cuidado con comparar objetos que son iguales pero no son lo mismo
JugadorSeleccion villa = new JugadorSeleccion(7, "Villa", "Delantero");
System.out.println("Esta este objeto 'villa' en el Map: jugadores.containsValue(villa) =
"+jugadores.containsValue(villa));

Como salida conseguiremos la siguiente:


Esta este objeto 'villa' en el Map: jugadores.containsValue(villa) = false

En cambio, si ejecutamos lo que viene a continuacin, estaremos preguntando por un objeto que s que est dentro
del Map:
// En este caso si que estamos preguntando por el mismo objeto
JugadorSeleccion navas = new JugadorSeleccion(22, "Navas", "Extremo Derecho");
jugadores.put("Navas", navas);
System.out.println("Esta este objeto 'navas' en el Map: jugadores.containsValue(navas) =
"+jugadores.containsValue(navas));

Y como salida mostrar lo que sigue:


Esta este objeto 'navas' en el Map: jugadores.containsValue(navas) = true

En lo relacionado con trabajar con objetos propios es lo nico en lo que hay que tener cuidado. Aunque los que
estis acostumbrados a programar en lenguajes como C o C++ en los que hay que tener muchsimo cuidado con
open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

los punteros, sto lo tendris ms que superado. Sobre el resto de mtodos, a la hora de trabajar con objetos
propios, no hay mucho ms que decir.
Cualquier duda sobre los Map, no dudis en preguntarla dejando un comentario en la entrada o en el Foro.

Recomendados

Interface en Java 8 Metodo Default- con


ejemplos
Comparte esta entrada en:

Enum (Enumerados) en
Java, con ejemplos

Polimorfismo en Java
(Parte I), con ejemplos

Polimorfismo en Java Interface- (Parte II), con


ejemplos

Map en Java, con ejemplos por "www.jarroba.com" esta bajo una licencia Creative Commons
Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License. Creado a partir de la obra en
www.jarroba.com

48 comentarios sobre Map en Java, con ejemplos


open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

1.

carlos dice:
19/05/2016 a las 00:07
como podria hacer un modificar en hashmap
Responder

2.

kahmra dice:
21/12/2015 a las 02:31
Hola gracias por tus tutoriales, tengo las sigueinte duda, he creado el siguiente mapa Mapa<Integer,Clase> y
dentro de mi clase tengo Un arraylist, sin embargo cuando llamo este arraylist desde donde sea slo me
devuelve el ltimo arraylist insertado, qu puedo hacer?
Responder

1.

kahmra dice:
21/12/2015 a las 02:34
Nada, que lo he conseguido slo deba hacer nombreArrayList = new ArrayList<Double>();
Responder

3.

Salva dice:
17/12/2015 a las 12:23

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

Hola a todos:
Mi problema es que me interesa recorrer slo una parte de un hashmap, desde una posicin a otra. Pero
no se cmo debo recorrerlo. Alguno me prodra echar una mano?
Intento hacer esto pero no me saca bien los valores:
private static Map<Integer, Tema> temasDB = new ConcurrentHashMap<Integer, Tema>();
..
//inicio es el valor desde el que quiero emprezar
for (int i = inicio; i < temasDB.size(); i++) {
resultado += temasDB.get(i) + ". " + temasDB.values().toArray()[i] + "\n";
}
Gracias de antemano.
Responder

1.

Ramn [Admin Jarroba] dice:


17/12/2015 a las 18:36
Hola Salva. Prueba mejor obteniendo un tipo de Listado con:
miHashMap.entrySet()

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

Obtienes Set que contiene Entry con que son objetos Pojo de clave y valor. De este modo puedes
trabajar como si fuera un listado.
Tambin puedes convertirlo en Array con:
miHashMap.entrySet().toArray()
Responder

4.

Carlos Blazquez dice:


03/11/2015 a las 10:09
Al realizar :
while(it.hasNext()){
Integer key = it.next();
System.out.println("Clave: " + key + " -> Valor: " + map.get(key));

No hace falta realizar un cast en la linea : Integer key = it.next();


y que quedara de la siguiente forma : Integer key = (Integer) it.next(); ??

Si no es asi podrais comentarme el porque ? Gracias y un saludo.


Responder
open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

5.

Miguel dice:
12/10/2015 a las 17:16
Realmente buena y clara la explicacio, y una fuente de ideas genial.
Gracias
Responder

6.

Edinson R. dice:
16/09/2015 a las 12:53
Muchas gracias por la Informacin.
Responder

7.

Mariano dice:
12/09/2015 a las 20:10
Buen material, se agradece!
Responder

8.

sergi dice:
31/08/2015 a las 12:39

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

Hola, felicidades por las explicaciones, son muy claras. Tengouna duda. Estoy intentando convertir un map en
un set pero me veo incapaz.
He hecho un bucle, recorriendo los values del map, ahora pretendo instanciar un set para ir llenando el set con
todos sus valores. Como puedo hacerlo?
Gracias y un saludo
Responder

1.

Ramn [Admin Jarroba] dice:


12/09/2015 a las 17:24
El mtodo keySet() del HashMap te devuelve el
Set: http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html#keySet()
Responder

9.

brigge dice:
27/06/2015 a las 20:22
buenas tardes porfavor me pueden ayudar indicandome como puedo hacer para obtener una funcion
llamando al parametro q e creado en hash map
Responder

1.

Ramn [Admin Jarroba] dice:

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

27/06/2015 a las 23:22


En Java no puedes pasar funciones. Si guardas en el Map un objeto y lo obtienes puedes llamar a sus
funciones.
Responder

10.

Raquel dice:
28/03/2015 a las 02:02
Gracias por esta soberbia explicacin de la interface Map. Buscando en ingls y resulta que ni punto de
comparacin con lo que he encontrado en vuestra pgina. Aunque he de decir que ya os conoca: explicasteis
como nadie lo que es el polimorfismo y qu decir de los threads Impagable.

Quisiera dejaros un apunte (constructivo) por si quereis tomarlo en consideracin: cuando bajas el cdigo y lo
abres en eclipse salta el error de los acentos. Es fcil corregirlo, pero a lo mejor alguna persona no lo ve tan
fcil. Y hablo por mi cuando comenzaba en esto, cualquier error del editor recuerdo que era un mundo.

Gracias de nuevo por vuestras explicaciones.


Responder

1.

Ramn [Admin Jarroba] dice:


29/03/2015 a las 12:01

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

Gracias Raquel por el apunte, era algo que no habamos visto, lo corregiremos.
Responder

11.

Ana dice:
20/03/2015 a las 18:05
Hola,
Slo quera agradecer las aportaciones tan valiosas y desinteresadas que hacis para la gente que
empezamos en el mundo de java.
Sois unos fieras, tan jvenes y tanto conocimiento
Mis ms sinceras felicitaciones.
Responder

1.

Ramn [Admin Jarroba] dice:


24/03/2015 a las 17:24
Gracias Ana por reconocernos el esfuerzo
Responder

12.

Josh dice:
23/02/2015 a las 18:19

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

Excelente explicacin, en caso de querer leer desde un archivo .txt los nombres delos jugadores que
procedimiento seria utilizando los maps, espero me resuelvan esa duda, saludos.
excelente blog.
Responder

1.

Ramn [Admin Jarroba] dice:


24/02/2015 a las 16:01
Solo tendras que ir leyendo del fichero e ir guardando en el Map. Cuando tengas los datos en el Map
utilizaras ste.
Responder

13.

Ceci dice:
13/02/2015 a las 02:34
Mil gracias muchachos! me ha servido mucho
Responder

14.

Juan David Ospina dice:


08/01/2015 a las 04:34
Amigo son los Mejores Explicando
Podrian Hacer un Post con La Interfaz Set ???
Me seria de gran ayuda

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

Responder

1.

Ramn [Admin Jarroba] dice:


08/01/2015 a las 20:52
Gracias Juan. Tomamos nota de la sugerencia
Responder

15.

Janier dice:
31/12/2014 a las 05:44
Excelente explicacin!!
Como puedo imprimir los datos de un valor a partir de su clave especfica Tomando en cuenta que los
valores son Tipo objeto.
Gracias!
Responder

1.

Richard [Admin Jarroba] dice:


01/01/2015 a las 11:43
Hola Javier.
Para ello debes de sobreescribir en la clase el mtodo toString() como se ve en el ltimo mtodo de la
clase JugadorSeleccion.

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

SL2
Responder

1.

CROBER dice:
12/05/2016 a las 19:48
YO CREO QUE LA MEJOR FORMA ES QUE SE AGA ANGO SENCILLO AMIGOS

Responder

16.

Jordi dice:
24/11/2014 a las 13:17
Buen trabajo chicos!!!!
Slo comentaros que la Clase HashMap como bien comentis no acepta claves duplicadas aunque si acepta
null (slo aceptara uno porqu el segundo seria una duplicidad) y SI acepta null en lo referente a los valores,
sin limitaciones.

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

Enhorabuena por la web!!!


Responder

1.

Ramn [Admin Jarroba] dice:


26/11/2014 a las 01:06
Gracias Jordi por el aadido
Responder

17.

Teresa Andrade dice:


22/10/2014 a las 06:43
Gracias Excelente pagina para alguien que esta empezando con Java y que me cuesta demasiado entender
Yo tengo la situacion siguiente:
un objeto que tiene como 5 atributos (siennndo uno de esstos el que se utilizara como clave) y 4 metodos
he creado un map (String, objeto)
al hacer map.put no me da problemaass
no tengo problemas paraa compilar, pero al momento de ejecutar, ingreeso mi codiggo tipo string como
clave, y al imprimir tengo algo assi:
Clave: codigo
Valores: vaariable objeto@d93b30
Porque nno puedo ver el contenido de todos los atributos que le corressponden a esa clave.
Puess lleugo quiero hacer una busqueda, y cuando ingreso la clave se me va por el mensaje programado de

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

no se encotraron registros
Responder

1.

Richard [Admin Jarroba] dice:


22/10/2014 a las 15:57
Hola Teresa.
Estas imprimiendo el objeto de tu map como tal y no los atributos del mismo. Mira como en la entrada
sobre-escribo el mtodo toString en la clase JugadorSeleccion:
@Override
public String toString() {
return this.dorsal+ +this.nombre+ +this.demarcacion;
}
De esta forma imprime los atributos del objeto de tu map. Sobre la clase debes de asignar la clave al
map aunque luego la tengas tambin en tu objeto, pero asegurate en asignarla al map para luego hacer
bien la bsqueda.
SL2
Responder

18.

Mary dice:
11/09/2014 a las 05:28
Buenas tardes, me encant las explicaciones, estoy comenzando en el mundo java y la verdad que me cuesta

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

bastante todo eso y esta web me ha servido de mucha ayuda.


Estoy tratando de realizar una grfica con valores que ordene dentro de un HashMap, estoy teniendo
problemas para poder sacar estos valores dentro del HashMap, de forma tal, que queden ordenados cada
uno con el que le corresponde.si me pueden tirar alguna ayudita estara agradecida. Gracias y saludos
Responder

1.

Ramn [Admin Jarroba] dice:


13/09/2014 a las 01:43
Hola Mary,
te recomiendo que eches un vistazo a este tutorial http://jarroba.com/ordenar-un-arraylist-en-java/, donde
explicamos como ordenar en un ArrayList (del HashMap puedes sacar el ArrayList con entrySet())
Responder

19.

Martn Alejandro dice:


09/09/2014 a las 18:44
Muchisimas gracias por este tutorial que han preparado para nosotros, esta muy bien explicado, muy claro
todo, con varios ejemplos, es lo que uno siempre quisiera encontrarse, muchas gracias por tomarse el tiempo
de hacer estos tutoriales. Tengo una pregunta con respecto al TreeMap, si yo quisiera meter en el TreeMap
un objeto como clave, como le hago para que me los ordene respecto a un criterio que yo especifique??
como en c++ que puedes sobrecargar el operador <" para una determinada estructura, se puede hacer esto
en java??. Gracias por todo.
Saludos de otro nuevo seguidor!!

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

Responder

1.

Richard [Admin Jarroba] dice:


09/09/2014 a las 18:56
Hola Martn.
La verdad que lo que comentas nose si tiene sentido hacerlo con un Map, aunque poner como clave un
objeto en principio se puede hacer aunque yo la verdad no lo he hecho nunca (salvo los String, Integer y
dems que son los objetos de los datos atmicos por decirlo de alguna forma). El tema de la
ordenacin por clave es algo interno del tipo de Map que utilices. Si utilizas un TreeMap y tienes como
clave un Integer, este te lo ordenar en orden, pero si pones como clave un objeto te lo ordenar segn
el criterio del TreeMap.
En resumen lo que propones nose si se puede hacer. Quizas para hacer eso yo utilizara un ArrayList y
lo ordenaria segn el atributo que quisieses. En esta web tienes una entrada de como ordenar un
ArrayList: http://jarroba.com/ordenar-un-arraylist-en-java/
SL2
Responder

2.

horv dice:
11/09/2014 a las 17:20
Buenas: si quieres ordenar objetos solo tienes que implementar la interfaz Comparable y definir el
mtodo compareTo() en la clase correspondiente; por ejemplo, para una clase MyTime:
@Override //compareTo

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

public int compareTo(MyTime f) {


if(this.hour > f.hour)
return 1;
else if(this.hour f.minute)
return 1;
else if(this.minute < f.minute)
return -1;
else
return 0;
}
}
Si te he entendido mal y buscas otra cosa, te pido disculpas. Un saludo.
Responder

1.

horv dice:
11/09/2014 a las 17:31
Al copiar y pegar el cdigo se ha perdido mucho texto, a ver si funciona ahora:
@Override //compareTo
public int compareTo(MyTime f) {
if(this.hour > f.hour) {
return 1;
}
else if(this.hour f.minute) {
return 1;
}

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

else if(this.minute < f.minute) {


return -1;
}
else { //this.hour == f. hour && this.minute == f.minute
return 0;
}
}
}

Un saludo y perdona las molestias.


Responder

1.

horv dice:
11/09/2014 a las 17:32
Pues no, sigue pasando lo mismo; espero que an as puedas orientarte. Un saludo y
disculpa de nuevo.
Responder

20.

Kevin dice:
17/06/2014 a las 23:23
hola, queria saber como puedo insertar objetos tanto el la clave como en el valor(bueno uno puede ser string),
nesesito hacer un diccionario, y como puedo ordenarlos en base a un atributo del objeto, o de su clave,
gracias

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

Responder

1.

Ramn [Admin Jarroba] dice:


18/06/2014 a las 18:59
Buenas Kevin,
Muy sencillo, puedes utilizar TreeMap (ms informacin en:
http://docs.oracle.com/javase/6/docs/api/java/util/TreeMap.html), su principal utilidad es que va
ordenando las claves segn las insertas. Un ejemplo rpido sera:
Map<Integer, String> mapa = new TreeMap<Integer, String>();
mapa.put(3, "aaa");
mapa.put(1, "bbb");
mapa.put(2, "ccc");
Set<Entry<Integer, String>> s = mapa.entrySet();
for (Entry<Integer, String> entry : s) {
System.out.println(entry.getKey() + " -> " + entry.getValue());
}

La salida por pantalla ordenado por claves:


1 -> bbb
2 -> ccc
3 -> aaa

Responder

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

21.

Willandher dice:
23/05/2014 a las 02:27
Buenas noches, quisiera saber si hay alguna forma de que el mapa almacene los valores de manera
permanente en el programa es decir que funcione como una Session en java, de tal forma que pueda ser
usado tambien en otra clase ademas de la misma de donde esta siendo usada gracias
Responder

1.

Ramn [Admin Jarroba] dice:


23/05/2014 a las 22:14
Buenas Willandher,
Una opcin es que crees el Map como una variable global y esttica para acceder directamente a sta
desde cualquier parte del programa sin tener que instanciar la clase ni perder el valor guardado en ella
(ten en cuenta que al cerrar el programa todo se borra, solo persisten mientras el programa est en
ejecucin). Tambin te puede interesar utilizar el patrn Singleton que sirve para estas cosas.
Responder

1.

maria dice:
24/03/2015 a las 11:57
Como se implementa eso en cdigo en Java?

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

Gracias
Responder

1.

Ramn [Admin Jarroba] dice:


24/03/2015 a las 17:32
Los Maps? Tienes el ejemplo ms arriba.
Responder

22.

Miguel Angel dice:


30/04/2014 a las 21:28
Hola, una pregunta, si en un map queremos meter >
public int protagonizar (Film f, Collection ci)
cuando map lo he declarado private Map; como se debe hacer? ya que el put da error. Gracias
Responder

1.

Miguel Angel dice:


30/04/2014 a las 21:29

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

Map filmo;
Responder

1.

Richard [Admin Jarroba] dice:


01/05/2014 a las 14:48
Hola Miguel Angel. No entiendo muy bien tu pregunta, pero si declaras un Map como private no
tienes porque tener ningn problema siempre que trabajar en la misma clase en la que lo tienes
declarado. Sino me das ms datos no puedo ayudarte.
Por otro lado recuerda que Map es una Interface por tanto debes de instanciar un HashMap,
TreeMap, o lo que sea, igual es eso lo que te da problemas.
Con lo que me dices no puedo ayudarte, as que o me das ms datos o el error puede venir de
otro lado.
Saludos
Responder

23.

Jos dice:
10/03/2014 a las 19:35
Buen trabajo. Seguir as. Me encanta vuestra web.
Saludos de otro nuevo seguidor.
Responder

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

24.

salva dice:
01/03/2014 a las 17:57
He descubierto hoy vuestra web y me parece que, con diferencia, le dais mil vueltas al resto de webs que
intentan explicar cosas de java.(An no he visto las entradas que tenis de Android pero imagino que
seguirn la misma lnea)
Explicaciones entendibles y con cdigo que funciona!! Parecer una tontera, pero no es nada fcil de
encontrar.
Enhorabuena, os animo a que sigis destripando java de la forma en la que lo estis haciendo.
Saludos de un nuevo seguidor!!
Responder

1.

Richard [Admin Jarroba] dice:


02/03/2014 a las 15:04
Hola Salva. Muchas Gracias por tus palabras. Poco a poco vamos sacando tutoriales de como hacer
las cosas aunque lo vamos haciendo poco a poco porque no tenemos dedicacin exclusiva a esta web.
De todas formas tenemos idea de seguir sacando tutoriales de Java ya que tanto Ramn como yo
tenemos mucha experiencia con este lenguaje.
Gracias y Saludos
Responder

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

Deja un comentario
Tu direccin de correo electrnico no ser publicada. Los campos obligatorios estn marcados con *

Nombre *
Correo electrnico *
Web
Publicar comentario

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

Siguenos en:

Contacto: jarrobaweb@gmail.com
FAQ
Visitas
Gastos
Site-Map
Copyright 2016 Jarroba.com - Todos los derechos reservados
Uso de cookies

By Reimon & Richard

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si contina navegando est dando su consentimiento para la aceptacin de las mencionadas cookies y la aceptacin de nuestra
poltica
de cookies

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

ACEPTAR

pdfcrowd.com

Vous aimerez peut-être aussi