How to get values and keys from HashMap?

485,195

Solution 1

To get all the values from a map:

for (Tab tab : hash.values()) {
    // do something with tab
}

To get all the entries from a map:

for ( Map.Entry<String, Tab> entry : hash.entrySet()) {
    String key = entry.getKey();
    Tab tab = entry.getValue();
    // do something with key and/or tab
}

Java 8 update:

To process all values:

hash.values().forEach(tab -> /* do something with tab */);

To process all entries:

hash.forEach((key, tab) -> /* do something with key and tab */);

Solution 2

Map is internally made up of Map.Entry objects. Each Entry contains key and value. To get key and value from the entry you use accessor and modifier methods.

If you want to get values with given key, use get() method and to insert value, use put() method.

#Define and initialize map;
Map map = new HashMap();
map.put("USA",1)
map.put("Japan",3)
map.put("China",2)
map.put("India",5)
map.put("Germany",4)

map.get("Germany") // returns 4

If you want to get the set of keys from map, you can use keySet() method

Set keys = map.keySet();
System.out.println("All keys are: " + keys);
// To get all key: value
for(String key: keys){
    System.out.println(key + ": " + map.get(key));
}

Generally, To get all keys and values from the map, you have to follow the sequence in the following order:

  • Convert Hashmap to MapSet to get set of entries in Map with entryset() method.:
    Set st = map.entrySet();
  • Get the iterator of this set:
    Iterator it = st.iterator();
  • Get Map.Entry from the iterator:
    Map.Entry entry = it.next();
  • use getKey() and getValue() methods of the Map.Entry to get keys and values.
// Now access it
Set st = (Set) map.entrySet();
Iterator it = st.iterator();
while(it.hasNext()){
    Map.Entry entry = mapIterator.next();
    System.out.print(entry.getKey() + " : " + entry.getValue());
}

In short, use iterator directly in for

for(Map.Entry entry:map.entrySet()){
    System.out.print(entry.getKey() + " : " + entry.getValue());
}

Solution 3

You give 1 Dollar, it gives you a cheese burger. You give the String and it gives you the Tab. Use the GET method of HashMap to get what you want.

HashMap.get("String");

Solution 4

To get values and keys you could just use the methods values() and keySet() of HashMap

public static List getValues(Map map) {
    return new ArrayList(map.values());
}

public static List getKeys(Map map) {
    return new ArrayList(map.keySet());
}

Solution 5

for (Map.Entry<String, Tab> entry : hash.entrySet()) {
    String key = entry.getKey();
    Tab tab = entry.getValue();
    // do something with key and/or tab
}

Works like a charm.

Share:
485,195
0xCursor
Author by

0xCursor

This user likes to keep an air of mystery about them.

Updated on July 05, 2022

Comments

  • 0xCursor
    0xCursor about 2 years

    I'm writing a simple edit text in Java. When the user opens it, a file will be opened in JTabbedPane. I did the following to save the files opened:

    HashMap<String, Tab> hash = new HashMap<String, Tab>();

    Where Tab will receive the values, such as: File file, JTextArea container, JTabbedPane tab.

    I have a class called Tab:

    public Tab(File file, JTextArea container, JTabbedPane tab)
    {
        this.file = file;
        this.container = container;
        this.tab = tab;
        tab.add(file.getName(), container);
        readFile();
    }
    

    Now, in this SaveFile class, I need get the Tab values stored in the HashMap. How can I do that?

    • Admin
      Admin about 11 years
      Already ? It's always so, negative the topic.
  • Prabhu
    Prabhu almost 8 years
    You copied my answer
  • Bohemian
    Bohemian over 7 years
    That train wreck is the same as just map.values()
  • Hritik
    Hritik about 7 years
    Shouldn't it be HashMapObj.get("String"); ?
  • Andrejs
    Andrejs over 5 years
    Answer brings nothing new to the table, other answers already explain this and much more.
  • Andrei Drynov
    Andrei Drynov about 2 years
    You give 1 US dollar in 2022 and you get no burger ;-)