idungotnosn
idungotnosn

Reputation: 2047

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

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?

Upvotes: 81

Views: 300092

Answers (6)

rajat meena
rajat meena

Reputation: 363

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

This is will do just fine.

Upvotes: 15

Cengiz
Cengiz

Reputation: 4867

Since Java 8:

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

Upvotes: 9

Zeeshan Mehdi
Zeeshan Mehdi

Reputation: 1439

 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

Upvotes: -1

Anu
Anu

Reputation: 1061

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- Most concise way to convert a Set<String> to a List<String>

Upvotes: 106

Kal
Kal

Reputation: 24910

map.keySet()

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

Upvotes: 9

Marcelo
Marcelo

Reputation: 11308

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.

Upvotes: 113

Related Questions