2011-07-05 22 views
36

Actualmente estoy tratando de hacer un programa que conjugue los verbos al español. Creé una tabla Hash que contiene una clave y una instancia del objeto Verb. La clave es una cadena que tiene la forma infinitiva del verbo (por ejemplo, "hablar"). Este es el código que tengo hasta ahora para el mapa hash:¿Cómo devolver una lista de claves desde un mapa hash?

public class VerbHashMap { 

    HashMap<String, Verb> verbHashMap; 

    public VerbHashMap(){ 
     verbHashMap = new HashMap(); 
    } 
} 

clave de cada verbo en el HashMap se basa en el infinitivo del verbo. Por ejemplo, la cadena "hablar" es la clave para un verbo español. El verbo de clase tiene un método llamado getInfinitive() que devuelve una cadena que contiene la forma infinitiva del verbo.

public boolean addVerb(Verb verb){ 
    if(verbHashMap.containsValue(verb.getInfinitive()){ 
     return false; 
    } 
    else{ 
     verbHashMap.put(verb.getInfinitive(), verb); 
     return true; 
    } 
} 

La pregunta es ¿cuál es la forma más eficiente de crear un método que devuelve una lista de todos los verbos en el mapa hash en orden alfabético? ¿Debo tener el método para devolver una ArrayList que incluya las claves de todos los objetos en el mapa hash? ¿O hay una forma mucho más eficiente de hacerlo?

+0

La manera en que su 'addVerb()' método comprueba la existencia del valor en primer lugar, no debe el verbo ser la clave? – Marcelo

Respuesta

68

Utilice el método keySet() para devolver un conjunto con todas las claves de Map.

Si desea mantener ordenado su mapa, puede usar un TreeMap.

+1

¿Cómo puedo obtener una lista de claves y no un conjunto? Porque necesito acceder a las claves individuales después de hacer el Mapa. – gonephishing

+4

@gonephishing Puede usar el conjunto como parámetro para el constructor de una ArrayList, por ejemplo .. – Marcelo

5
map.keySet() 

le devolverá todas las llaves. Si desea ordenar las claves, puede considerar un TreeMap

Cuestiones relacionadas