Foros del Web » Programación para mayores de 30 ;) » Java »

Que es un HashMap y si alguien sabe un manual o donde puedo informarme

Estas en el tema de Que es un HashMap y si alguien sabe un manual o donde puedo informarme en el foro de Java en Foros del Web. Que es un HashMap y si alguien sabe un manual o donde puedo informarme se lo agradeceria y mucho....
  #1 (permalink)  
Antiguo 14/07/2006, 04:49
 
Fecha de Ingreso: diciembre-2005
Mensajes: 46
Antigüedad: 18 años, 4 meses
Puntos: 0
Que es un HashMap y si alguien sabe un manual o donde puedo informarme

Que es un HashMap y si alguien sabe un manual o donde puedo informarme se lo agradeceria y mucho.
  #2 (permalink)  
Antiguo 17/07/2006, 17:28
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 9 meses
Puntos: 24
un HashMap, es una colección de objetos, (como los Arrays), pero estos no tienen orden.
Cada objeto se identifica mediante algun indentificador apropiado, por ejemplo un "uuid".
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.

El condepto en JAVA es similar, el HASHMAP posee un espacio de memoria, y cuando se guarda un objeto alli, se determina su direccion aplicandole una funcion a la llave que le indicamos.
Por ejemplo:

HashMap contenedor = new HashMap();
Object objeto = new Object();
String llave = new String("identificador de objeto");
contendor.add(llave,objeto);
__________________
http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux

Última edición por TolaWare; 27/07/2006 a las 22:23
  #3 (permalink)  
Antiguo 17/07/2006, 17:28
 
Fecha de Ingreso: marzo-2004
Ubicación: Montevideo
Mensajes: 17
Antigüedad: 20 años, 1 mes
Puntos: 0
La biblioteca estándar de Java tiene dos tipos diferentes de objetos Map (que es una interfaz con cierta funcionalidad): HashMap y TreeMap.

Ambos tienen la misma interfaz (dado que implementan Map), pero difieren claramente en la eficiencia.

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.

Espero que esta información (extraída del libro "Thinking in Java") te aclare un poco las cosas. En el libro incluso hay un ejemplo de como aplicar esta funcionalidad.

Saludos
  #4 (permalink)  
Antiguo 17/07/2006, 19:17
Avatar de Tipdar  
Fecha de Ingreso: octubre-2005
Ubicación: Aquí y allá.
Mensajes: 323
Antigüedad: 18 años, 6 meses
Puntos: 7
Hola, para profundizar un poco en este tema (lo que voy a decir no lo he sacado de ningún libro). HashMap funciona parecido a las HashTable, es, como bien te han dicho una colección de objetos pero clave-valor. Es decir, para cada objeto que insertes debe existir una clave única. Una HashMap, a diferencia de las HashTable admiten valores nulos tanto en la clave como en el valor.

Date una vuelta por esta URL: cum.unex.es/profes/profes/sasah/FI_UNED/Tema%205.pdf
__________________
El último TipdaR
  #5 (permalink)  
Antiguo 19/07/2006, 09:07
 
Fecha de Ingreso: noviembre-2004
Mensajes: 12
Antigüedad: 19 años, 4 meses
Puntos: 0
Entonces, ¿ en qué casos usáis un ArrayList y en cuáles un HashMap ?

¿La diferencia está en el número de datos o en qué objetos guardar?

Me interesa mucho este tema :)

Gracias y un saludo.
  #6 (permalink)  
Antiguo 19/07/2006, 10:28
Avatar de Tipdar  
Fecha de Ingreso: octubre-2005
Ubicación: Aquí y allá.
Mensajes: 323
Antigüedad: 18 años, 6 meses
Puntos: 7
dmorente, ambas estructuras de datos almacenan Objects y por defecto en Java todas las clases heredan de Object, es decir, puedes guardar cualquier objeto en cada una de ellas. El asunto es ¿cuándo emplear una u otra? Por ejemplo, usas un ArrayList cuando necesitas acceder al n-avo elemento. Haz cuenta de que un ArrayList es una columna de objetos en línea y que un HashMap es algo así como una sala llena de objetos dispersos al que llamas por su nombre (clave-valor).

De más está decir que esas no son las únicas estructuras de datos que existen en Java. Tienes además Vector, LinkedList, TreeSet, TreeMap... etc, etc. y cada una de ellas tiene características que las diferencian del resto y que por ende son más óptimas que cualquier otra en cada caso.

Espero que eso pueda ayudar.
__________________
El último TipdaR
  #7 (permalink)  
Antiguo 19/07/2006, 11:37
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 19 años, 9 meses
Puntos: 53
en lo personal suelo usar mas un TreeMap para almacenar miles de objetos, peus el tiempo de recorrido es mucho menor al de un ArrayList, las listas las utilizo para manejar no mas de 500 elementos..

have funnnnn
  #8 (permalink)  
Antiguo 08/01/2007, 11:44
Avatar de fewar  
Fecha de Ingreso: octubre-2006
Mensajes: 22
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: Que es un HashMap y si alguien sabe un manual o donde puedo informarme

Uso el HashMap pero marca una adverticia es algo asi:

Type safety: The method put(Object, Object) belongs to raw type HashMap. References generic type HashMap<K,V> should be parameterized


no hay error y funciona érfecto sinembargo me gustara saber que debo hacer para que no muestre es erro, supongo que debo ursar dos objetos iguales lo cual ya he hecho pero sigue esa advertencia.

Gracias.
  #9 (permalink)  
Antiguo 08/01/2007, 13:13
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 19 años, 9 meses
Puntos: 53
Re: Que es un HashMap y si alguien sabe un manual o donde puedo informarme

mmmmm.... esto es por que la nueva version de JAVA necesitas especificarle el tipo de Objetos que almacenaras en la coleccion, esto lo haces en el contructor

have funnnnnn
  #10 (permalink)  
Antiguo 10/01/2007, 16:06
Avatar de fewar  
Fecha de Ingreso: octubre-2006
Mensajes: 22
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: Que es un HashMap y si alguien sabe un manual o donde puedo informarme

Cita:
Iniciado por stock Ver Mensaje
mmmmm.... esto es por que la nueva version de JAVA necesitas especificarle el tipo de Objetos que almacenaras en la coleccion, esto lo haces en el contructor

have funnnnnn
Puedes porner ejemplos o paginas donde pueda ver lo que dices!!

eso ayudaria muchisimo
  #11 (permalink)  
Antiguo 10/01/2007, 16:34
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 19 años, 9 meses
Puntos: 53
Re: Que es un HashMap y si alguien sabe un manual o donde puedo informarme

Generic Types

Generic types have been widely anticipated by the Java Community and are now part of J2SE 5.0. One of the first places to see generic types in action is the Collections API. The Collections API provides common functionality like LinkedLists, ArrayLists and HashMaps that can be used by more than one Java type. The next example uses the 1.4.2 libraries and the default javac compile mode.

Código PHP:
ArrayList list = new ArrayList();
  list.
add(0, new Integer(42)); 
  
int total = ((Integer)list.get(0)).intValue(); 
The cast to Integer on the last line is an example of the typecasting issues that generic types aim to prevent. The issue is that the 1.4.2 Collection API uses the Object class to store the Collection objects, which means that it cannot pick up type mismatches at compile time. The first notification of a problem is a ClassCastException at runtime.

The same example with the generified Collections library is written as follows:
Código PHP:
ArrayList<Integer> list =  new ArrayList<Integer>();
   list.
add(0, new Integer(42));
   
int total = list.get(0).intValue(); 
The user of a generified API has to simply declare the type used at compile type using the <> notation. No casts are needed and in this example trying to add a String object to an Integer typed collection would be caught at compile time.

Generic types therefore enable an API designer to provide common functionality that can be used with multiple data types and which also can be checked for type safety at compile time.

Designing your own Generic APIs is a little more complex that simply using them. To get started look at the java.util.Collection source and also the API guide.


Have funnnnnn
  #12 (permalink)  
Antiguo 03/09/2009, 10:43
 
Fecha de Ingreso: marzo-2006
Mensajes: 15
Antigüedad: 18 años, 1 mes
Puntos: 0
Respuesta: Que es un HashMap y si alguien sabe un manual o donde puedo informarme

Vi el aporte que hicieron y me sirvio de mucho, muchas gracias!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 5 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 22:00.