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

idu*_*osn 55 java hashmap

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

public class VerbHashMap {

    HashMap<String, Verb> verbHashMap;

    public VerbHashMap(){
        verbHashMap = new HashMap();
    }   
}
Run Code Online (Sandbox Code Playgroud)

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

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

问题是创建一个按字母顺序返回哈希映射中所有动词列表的方法的最有效方法是什么?我应该让方法返回一个ArrayList,其中包含哈希映射中所有对象的键吗?或者有更有效的方法来解决这个问题吗?

Mar*_*elo 93

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

如果您想保持订购地图,可以使用TreeMap.

  • @gonephishing您可以使用set作为ArrayList的构造函数的参数,例如.. (7认同)

小智 64

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

List<String> l = new ArrayList<String>(map.keySet());
Run Code Online (Sandbox Code Playgroud)

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

PS: - source- 将Set <String>转换为List <String>的最简洁方法


raj*_*ena 10

List<String> yourList = new ArrayList<>(map.keySet());
Run Code Online (Sandbox Code Playgroud)

这是会做的很好。


Cen*_*giz 8

从 Java 8 开始:

List<String> myList = map.keySet().stream().collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)


Kal*_*Kal 7

map.keySet()
Run Code Online (Sandbox Code Playgroud)

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