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

时间:2011-07-05 22:52:58

标签: java hashmap

我目前正在尝试制作一个将动词与西班牙语结合的程序。我创建了一个哈希表,其中包含一个键和一个对象动词的实例。键是一个具有动词不定式形式的字符串(例如,“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,其中包含哈希映射中所有对象的键吗?或者有更有效的方法来解决这个问题吗?

5 个答案:

答案 0 :(得分:88)

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

如果您想保留订购的地图,可以使用TreeMap

答案 1 :(得分:60)

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

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

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

PS: - source- Most concise way to convert a Set<String> to a List<String>

答案 2 :(得分:7)

map.keySet()

将返回所有键。如果要对键进行排序,可以考虑使用TreeMap

答案 3 :(得分:5)

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

这样就可以了。

答案 4 :(得分:0)

 for(int i=0;i<ytFiles.size();i++){

                    int key = ytFiles.keyAt(i);
                    Log.e("key", String.valueOf(key));
                    String format = ytFiles.get(key).getFormat().toString();
                    String url = ytFiles.get(key).getUrl();
                    Log.e("url",url);
                }

您可以通过keyat方法获取密钥,并且必须传递索引,然后它将在该特定索引处返回密钥。该循环将获取所有密钥