2010-06-16 22 views
15

¿Cómo se busca una clave en un HashMap? En este programa, cuando el usuario ingresa una clave, el código debe organizar buscar en el hashmap el valor correspondiente y luego imprimirlo.Buscar un valor para una clave determinada en un HashMap

Por favor, dime por qué no está funcionando.

import java.util.HashMap; 

import java.util.; import java.lang.; 

public class Hashmapdemo 
{ 
    public static void main(String args[]) 
    { 
     String value; 
     HashMap hashMap = new HashMap(); 
     hashMap.put(new Integer(1),"January"); 
     hashMap.put(new Integer(2) ,"February"); 
     hashMap.put(new Integer(3) ,"March"); 
     hashMap.put(new Integer(4) ,"April"); 
     hashMap.put(new Integer(5) ,"May"); 
     hashMap.put(new Integer(6) ,"June"); 
     hashMap.put(new Integer(7) ,"July"); 
     hashMap.put(new Integer(8),"August"); 
     hashMap.put(new Integer(9) ,"September"); 
     hashMap.put(new Integer(10),"October"); 
     hashMap.put(new Integer(11),"November"); 
     hashMap.put(new Integer(12),"December"); 

     Scanner scan = new Scanner(System.in); 
     System.out.println("Enter an integer :"); 
     int x = scan.nextInt(); 
     value = hashMap.get("x"); 
     System.out.println("Value is:" + value); 
    } 
} 
+3

Hacer asegúrese de aceptar la respuesta que responde su pregunta presionando el "tic" al lado de ella. –

Respuesta

30

Sólo tiene que llamar get:

HashMap<String, String> map = new HashMap<String, String>(); 
map.put("x", "y"); 

String value = map.get("x"); // value = "y" 
+3

¿Cómo se hace el trabajo Jon si estás ocupado superando al resto de nosotros a las respuestas? ¿Ya tienes una UI súper desarrollada para filtrar y responder preguntas sobre SO? –

+4

si desea "buscar", es decir, verificar la disponibilidad antes de la recuperación, también puede usar el método containsKey. No sé si lo necesitas, pero la pregunta me lo dice. http://java.sun.com/j2se/1.4.2/docs/api/java/util/HashMap.html#containsKey%28java.lang.Object%29 –

+1

@Graphain: No estoy trabajando bien ahora, estoy escuchando a Chris Sells en NDC :) –

2

Usted escribió

HashMap hashMap = new HashMap(); 
... 
int x = scan.nextInt(); 
value = hashMap.get("x"); 

debe ser:

Map<Integer, String> hashMap = new HashMap<Integer, String>(); 
... 
int x = scan.nextInt(); 
value = hashMap.get(x); 

EDITAR o sin genéricos, como dicho en los comentarios:

int x = scan.nextInt(); 
value = (String) hashMap.get(new Integer(x)); 
+0

aún da erroe diciendo: cast ... get (...) a la cadena –

+0

aquí el valor es una variable de cadena –

+1

el método get devuelve un objeto. Tienes que convertirlo en una cadena como esta: value = (String) hashMap.get (nuevo Integer (x)); O utiliza los llamados "genéricos" para decirle al compilador que solo hay cadenas en su mapa, como hice en mi ejemplo usando "" –

0

// Si desea que la clave sea entero, entonces tendrá que declarar el HashMap // de la siguiente manera:

HashMap<Integer, String> map = new HashMap<Integer, String>(); 
map.put(0, "x"); 
map.put(1, "y"); 
map.put(2, "z"); 

// introducir un valor entero x

String value = map.get(x); 
Cuestiones relacionadas