如何获得价值。 来自HashMap的密钥?
我正在用Java编写一个简单的编辑文本。 当用户打开文件将在JTabbedPane
打开时。 从中获取文件。 我做了保存打开的文件。
HashMap hash = new HashMap();
哪里:
Tab
将接收值,例如: File file, JTextArea container, JTabbedPane tab
我有一个名为Tab的类:
public Tab(File file, JTextArea container, JTabbedPane tab) { this.file = file; this.container = container; this.tab = tab; tab.add(file.getName(), container); readFile(); }
现在,在这个SaveFile类中,我需要获取存储在HashTab中的值,以保存文件。 我是怎么做到的?
要从地图中获取所有值:
for (Tab tab : hash.values()) { // do something with tab }
要从地图中获取所有条目:
for ( Map.Entry entry : hash.entrySet()) { String key = entry.getKey(); Tab tab = entry.getValue(); // do something with key and/or tab }
Java 8更新:
要处理所有值:
hash.values().forEach(tab -> /* do something with tab */);
要处理所有条目:
hash.forEach((key, tab) -> /* do something with key and tab */);
Map
内部由Map.Entry
对象组成。 每个Entry
包含key
和value
。 要从条目中获取键和值,请使用访问器和修饰符方法。
如果要使用给定key
获取values
,请使用get()
方法并插入值,请使用put()
方法。
#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
如果要从map获取键集,可以使用keySet()
方法
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)); }
通常,要从地图获取所有键和值,您必须按以下顺序执行序列:
- 将
Hashmap
转换为MapSet
以使用entryset()
方法获取Map
的条目集:
Set st = map.entrySet();
- 获取此集的迭代器:
Iterator it = st.iterator();
- 从迭代器中获取
Map.Entry
:
Map.Entry entry = it.next();
- 使用
Map.Entry
getKey()
和getValue()
方法来获取键和值。
// 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()); }
简而言之,直接使用iterator
for(Map.Entry entry:map.entrySet()){ System.out.print(entry.getKey() + " : " + entry.getValue()); }
你给1美元,它给你一个芝士汉堡。 你给String,它给你Tab。 使用HashMap的GET方法来获得你想要的东西。
HashMap.get("String");
您可以使用迭代器来执行此操作:
对于钥匙:
for (Iterator itr= hash.keySet().iterator(); itr.hasNext();) { // use itr.next() to get the key value }
您可以使用与值类似的迭代器。
使用hashmap的’string’键来访问其值,即tab类。
Tab mytab = hash.get("your_string_key_used_to_insert");
您必须遵循以下操作顺序:
- 使用
map.entrySet();
将Map
转换为MapSet
map.entrySet();
- 使用
Mapset.iterator();
获取迭代器Mapset.iterator();
- 使用
iterator.next();
获取Map.Entry
iterator.next();
- 使用
Entry.getKey()
和Entry.getValue()
# define Map for (Map.Entry entry: map.entrySet) System.out.println(entry.getKey() + entry.getValue);
使用java8流API:
List values = map.entrySet().stream().map(Map.Entry::getValue).collect(Collectors.toList());
for (Map.Entry entry : hash.entrySet()) { String key = entry.getKey(); Tab tab = entry.getValue(); // do something with key and/or tab }
奇迹般有效。