当前位置: 首页 > 知识库问答 >
问题:

Java HashMap键值存储和检索

吕作人
2023-03-14

我想存储值并从Java HashMap中检索它们。

这是我目前所拥有的:

public void processHashMap()
{
    HashMap hm = new HashMap();
    hm.put(1,"godric gryfindor");
    hm.put(2,"helga hufflepuff"); 
    hm.put(3,"rowena ravenclaw");
    hm.put(4,"salazaar slytherin");
}

我想从HashMap中检索所有键和值,作为Java集合或实用程序集(例如,LinkedList)。

我知道如果我知道键,我可以得到值,如下所示:

hm.get(1);

有没有办法以列表的形式检索键值?

共有3个答案

琴琪
2023-03-14

<代码>地图。keySet()将提供所有键

段超
2023-03-14

Java Hashmap键值示例:

public void processHashMap() {
    //add keys->value pairs to a hashmap:
    HashMap hm = new HashMap();
    hm.put(1, "godric gryfindor");
    hm.put(2, "helga hufflepuff");
    hm.put(3, "rowena ravenclaw");
    hm.put(4, "salazaar slytherin");

    //Then get data back out of it:
    LinkedList ll = new LinkedList();
    Iterator itr = hm.keySet().iterator();
    while(itr.hasNext()) {
        String key = itr.next();
        ll.add(key);
    }

    System.out.print(ll);  //The key list will be printed.
}
程博学
2023-03-14

我使用这三种方法来迭代地图。所有方法(keySetentrySet)都返回一个集合。

// Given the following map
Map<KeyClass, ValueClass> myMap;

// Iterate all keys
for (KeyClass key  : myMap.keySet()) 
    System.out.println(key);

// Iterate all values
for (ValueClass value  : myMap.values()) 
    System.out.println(value);

// Iterate all key/value pairs
for (Entry<KeyClass, ValueClass> entry  : myMap.entrySet()) 
    System.out.println(entry.getKey() + " - " + entry.getValue());

由于Java 8,我经常将流与lambda表达式一起使用。

    // Iterate all keys
    myMap.keySet().stream().forEach(key -> System.out.println(key));

    // Iterate all values
    myMap.values().parallelStream().forEach(value -> System.out.println(value));

    // Iterate all key/value pairs
    myMap.entrySet().stream().forEach(entry -> System.out.println(entry.getKey() + " - " + entry.getValue()));
 类似资料:
  • 问题内容: 我想存储值并从Java HashMap中检索它们。 这是我到目前为止所拥有的: 我想从HashMap中检索所有键和值作为Java集合或实用程序集(例如)。 我知道只要知道密钥就可以获取值,例如: 有没有办法检索键值作为列表? 问题答案: Java Hashmap键值示例:

  • 问题内容: 我需要一个用于Java的非常基本的键值存储。我从HashMap开始,但似乎HashMap的空间效率有些低下(我正在存储约2000万条记录,并且似乎需要约6GB RAM)。 映射为,因此我考虑使用GNU Trove ,并将映射值存储为ascii字节数组而不是String。 作为替代方案,是否存在仅需要添加jar文件,不立即将整个映射保存在RAM中并且仍然相当快的键值存储? 问题答案: 使

  • 更新时间:2019-07-18 09:59:25 节点简介 键值对存储节点封装了KV存储服务API,开发者可以通过该节点进行键值对形式的数据写入、获取、删除操作。 使用场景 如果您需要在您开发的服务中以键值对形式进行数据的写入、获取、删除操作,那么您就需要使用到键值对存储节点作为服务的中间逻辑节点。 配置项 1、键值对存储节点的默认节点名称为键值对存储,支持用户自定义节点名称 2、选择操作类型,有

  • 问题内容: 我们是否可以用一个键和两个值实现HashMap。就像HashMap一样? 还请告诉我(如果没有办法)通过其他任何方法来实现三个值的存储(以一个为键)的方法,对我有帮助吗? 问题答案: 你可以: 使用具有列表作为值的地图。 创建一个新的包装器类,并将该包装器的实例放置在地图中。。 使用类似类的元组(节省创建许多包装器)。。 并排使用多个地图。 例子 1.使用列表作为值进行映射 这种方法的

  • 我的Java代码有问题。我想在一个键中存储多个值,但我想灵活地存储它们。这意味着我从一个文本文件中读取,每行是一个单词。为了储存它们,我想建立成对的单词。例如: 字1/字2 单词2/单词3 单词3/单词4 我已经稍微改变了这种方法。我想将键的值存储在数组列表中。这意味着每次出现新键时都会存储一个新的 Arraylist 和键,但如果键在映射中,我想将它们存储在这个键的列表中。这可能吗? 我们必须将

  • 我制作了一个用于注册成员的jsp页面,在注册时,如果用户忘记填写表单中的任何字段,另一个页面会显示一条错误消息。 为了实现这一点,我使用了3个servlet,第一个servlet从jsp页面获取值,并传递到第二个servlet,后者检查是否有任何字段为空,如果是,它将返回一条消息给第一个servlet,然后将消息传递给第三个servlet,以向用户显示错误消息。 我的问题是消息没有从第一个serv