How to return a list of keys from a Hash Map?

JavaHashmap

Java Problem Overview


I'm currently trying to make a program that conjugates verbs into Spanish. I've created a Hash Table that contains a key and an instantiation of the object Verb. The key is a string that has the infinitive form of the verb (for example, "hablar"). This is the code that I have so far for the hash map:

public class VerbHashMap {

    HashMap<String, Verb> verbHashMap;

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

Each verb's key in the HashMap is based on the infinitive form of the verb. For example, the string "hablar" is the key for a Spanish verb. The class Verb has a method called getInfinitive() which returns a string that contains the infinitive form of the verb.

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

The question is what is the most efficient way to create a method that returns a list of all the verbs in the Hash Map in alphabetical order? Should I have the method return an ArrayList which includes the keys of all the objects in the Hash Map? Or is there a much more efficient way to go about this?

Java Solutions


Solution 1 - Java

Use the keySet() method to return a set with all the keys of a Map.

If you want to keep your Map ordered you can use a TreeMap.

Solution 2 - Java

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());

And then use l.get(int) method to access keys.

PS:- source- https://stackoverflow.com/questions/2319538/most-concise-way-to-convert-a-setstring-to-a-liststring

Solution 3 - Java

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

This is will do just fine.

Solution 4 - Java

map.keySet()

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

Solution 5 - Java

Since Java 8:

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

Solution 6 - Java

 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);
                }

you can get key by method keyat and you have to pass the index then it will return key at that particular index. this loop will get all the key

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionidungotnosnView Question on Stackoverflow
Solution 1 - JavaMarceloView Answer on Stackoverflow
Solution 2 - JavaAnuView Answer on Stackoverflow
Solution 3 - Javarajat meenaView Answer on Stackoverflow
Solution 4 - JavaKalView Answer on Stackoverflow
Solution 5 - JavaCengizView Answer on Stackoverflow
Solution 6 - JavaZeeshan MehdiView Answer on Stackoverflow