如何从 HashMap 返回键列表?

我现在正在做一个程序,把动词变成西班牙语。我已经创建了一个哈希表,其中包含一个键和对象 Verb 的实例化。键是一个具有动词不定式形式的字符串(例如,“ 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;
}
}

问题是,创建一个方法,返回 HashMap 中所有动词的字母顺序列表,最有效的方法是什么?我是否应该让该方法返回一个包含 Hash Map 中所有对象的键的 ArrayList?还是有更有效的方法来解决这个问题?

251255 次浏览

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

如果你想保持你的地图有序,你可以使用一个 TreeMap

map.keySet()

will return you all the keys. If you want the keys to be sorted, you might consider a TreeMap

Using map.keySet(), you can get a set of keys. Then convert this set into List by:

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

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

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

 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 方法得到键,你必须传递索引,然后它会在特定的索引处返回键。这个循环会得到所有的密钥

从 Java 8开始:

List<String> myList = map.keySet().stream().collect(Collectors.toList());
List<String> yourList = new ArrayList<>(map.keySet());

这样就行了。