如何从哈希映射返回密钥列表?

2022-08-31 12:57:52

我目前正在尝试制作一个将动词与西班牙语共轭的程序。我创建了一个哈希表,其中包含对象谓词的键和实例化。键是具有动词的不定式形式的字符串(例如,“hablar”)。这是我到目前为止为哈希映射提供的代码:

public class VerbHashMap {

    HashMap<String, Verb> verbHashMap;

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

HashMap中每个动词的键都基于动词的不定式形式。例如,字符串“hablar”是西班牙语动词的键。类 Verb 有一个名为 getInfinitive() 的方法,该方法返回一个包含动词的不定式形式的字符串。

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

问题是,创建一个方法的最有效方法是什么,该方法按字母顺序返回哈希映射中所有动词的列表?我是否应该让该方法返回一个 ArrayList,其中包含哈希映射中所有对象的键?还是有更有效的方法可以做到这一点?


答案 1

使用该方法返回包含 的所有键的集合。keySet()Map

如果要保持地图有序,可以使用树状图


答案 2

使用 ,您可以获取一组密钥。然后将此集转换为:map.keySet()List

List<String> l = new ArrayList<String>(map.keySet());

然后使用方法访问密钥。l.get(int)

PS:- 源- 最简洁的方式将集<字符串>转换为列表<字符串>