如何获得价值。 来自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包含keyvalue 。 要从条目中获取键和值,请使用访问器和修饰符方法。

如果要使用给定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 } 

奇迹般有效。