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?
11 Answers
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 */); 0 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 4If 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
HashmaptoMapSetto get set of entries inMapwithentryset()method.:
Set st = map.entrySet(); - Get the iterator of this set:
Iterator it = st.iterator(); - Get
Map.Entryfrom the iterator:Map.Entry entry = it.next(); - use
getKey()andgetValue()methods of theMap.Entryto 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());
} 0 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"); 2 To get values and keysyou 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());
} You could use iterator to do that:
For keys:
for (Iterator <tab> itr= hash.keySet().iterator(); itr.hasNext();) { // use itr.next() to get the key value
}You can use iterator similarly with values.
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.
It will work with hash.get("key");Where key is your key for getting the value from Map
1Use the 'string' key of the hashmap, to access its value which is your tab class.
Tab mytab = hash.get("your_string_key_used_to_insert"); With java8 streaming API:
List values = map.entrySet().stream().map(Map.Entry::getValue).collect(Collectors.toList()); 1 You have to follow the following sequence of opeartions:
- Convert
MaptoMapSetwithmap.entrySet(); - Get the iterator with
Mapset.iterator(); - Get
Map.Entrywithiterator.next(); - use
Entry.getKey()andEntry.getValue()
# define Map
for (Map.Entry entry: map.entrySet) System.out.println(entry.getKey() + entry.getValue); 1 Using java 8 feature:
map.forEach((key, value) -> System.out.println(key + " " + value));Using Map.Entry you can print like this:
for (Map.Entry<KeyType, ValueType> entry : map.entrySet()) { System.out.println(entry.getKey()+" : "+entry.getValue()); }