Actualmente estoy intentando hacer un programa que conjugue verbos en español. He creado una tabla Hash que contiene una clave y una instanciación del objeto Verbo. 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:
public class VerbHashMap {
HashMap<String, Verb> verbHashMap;
public VerbHashMap(){
verbHashMap = new HashMap();
}
}
La clave de cada verbo en el HashMap se basa en la forma infinitiva del verbo. Por ejemplo, la cadena "hablar" es la clave de un verbo español. La clase Verb 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 devuelva una lista de todos los verbos en el Hash Map en orden alfabético? ¿Debería hacer que el método devolviera un ArrayList que incluyera las claves de todos los objetos del Hash Map? ¿O hay una forma mucho más eficiente de hacerlo?
Usando map.keySet()
, puedes obtener un conjunto de claves. A continuación, convertir este conjunto en List
por:
List<String> l = new ArrayList<String>(map.keySet());
Y luego usar el método l.get(int)
para acceder a las claves.
PS:- fuente- https://stackoverflow.com/questions/2319538/most-concise-way-to-convert-a-setstring-to-a-liststring