如何从HashMap获取值和键?

2022-08-31 15:17:50

我正在用Java编写一个简单的编辑文本。当用户打开它时,将在 中打开一个文件。我做了以下操作来保存打开的文件:JTabbedPane

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

其中将接收值,例如:。TabFile 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();
}

现在,在此类中,我需要获取存储在 .我该怎么做?SaveFileTabHashMap


答案 1

要从地图中获取所有值:

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

要从地图中获取所有条目:

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 更新:

要处理所有值:

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

要处理所有条目:

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

答案 2

Map内部由对象组成。每个都包含 和 。若要从条目中获取键和值,请使用访问器和修饰符方法。Map.EntryEntrykeyvalue

如果要使用 给定 ,请使用 方法 并插入值,请使用方法。valueskeyget()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));
}

通常,若要从映射中获取所有键和值,必须按以下顺序遵循以下顺序:

  • 转换为 以获取 with 方法中的条目集。:HashmapMapSetMapentryset()
    Set st = map.entrySet();
  • 获取此集合的迭代器:
    Iterator it = st.iterator();
  • 从迭代器获取:Map.Entry
    Map.Entry entry = it.next();
  • 获取键和值的用法和方法。getKey()getValue()Map.Entry
// 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());
}

简而言之,直接在

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