如何从HashMap获取值和键?

时间:2013-04-26 23:53:45

标签: java hashmap

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

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

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课程中,我需要获取Tab中存储的HashMap值。我怎么能这样做?

10 个答案:

答案 0 :(得分:75)

从地图中获取所有值:

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 */);

答案 1 :(得分:23)

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

如果您想使用values获取key,请使用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

如果您想从地图中获取一组键,可以使用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,使用Map方法获取entryset()条目集:。Set st = map.entrySet();
  • 获取此集的迭代器:
    Iterator it = st.iterator();
  • 从迭代器获取Map.Entry
    Map.Entry entry = it.next();
  • 使用getKey()的{​​{1}}和getValue()方法获取密钥和值。
Map.Entry

简而言之,直接使用iterator for

// 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());
}

答案 2 :(得分:12)

你给1美元,它给你一个芝士汉堡。你给String,它给你Tab。使用HashMap的GET方法来获得你想要的东西。

HashMap.get("String");

答案 3 :(得分:2)

您可以使用迭代器来执行此操作:

对于键:

for (Iterator <tab> itr= hash.keySet().iterator(); itr.hasNext();) {
    // use itr.next() to get the key value
}

您可以使用与值类似的迭代器。

答案 4 :(得分:1)

使用hashmap的'string'键来访问它的值,这是你的tab类。

Tab mytab = hash.get("your_string_key_used_to_insert");

答案 5 :(得分:1)

使用java8流API:

List values = map.entrySet().stream().map(Map.Entry::getValue).collect(Collectors.toList());

答案 6 :(得分:0)

您必须遵循以下操作顺序:

  • 使用Map
  • MapSet转换为map.entrySet();
  • 使用Mapset.iterator();
  • 获取迭代器
  • 使用Map.Entry
  • 获取iterator.next();
  • 使用Entry.getKey()Entry.getValue()
# define Map
for (Map.Entry entry: map.entrySet)
    System.out.println(entry.getKey() + entry.getValue);

答案 7 :(得分:0)

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

像魅力一样。

答案 8 :(得分:0)

它将与 hash.get(“ key”); 一起使用 键是您从Map获取价值的键

答案 9 :(得分:0)

获取值和键 您可以只使用HashMap的values()和keySet()方法

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

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