【问题标题】:Extracting a value from a HashMap with a dynamic key使用动态键从 HashMap 中提取值
【发布时间】:2017-10-26 22:05:08
【问题描述】:

我有一个带有 HashMap class 的 Java Web 应用程序来存储大约 20 个不同的网站,其中关键是特定代码:

例如代码:AB 网站:http://www.somewebsiteforAB.com

我通过另一个 Java Class 生成代码 (HashMap key),它出现在 JSP 中以供用户显示。

我试图了解如何将这个“动态”变量从 JSP 传递到 HashMap 以返回相关值。

我的Java class 是:

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;

import java.util.Iterator;
import java.util.Set;

public class FaMap {

    // Initialisers a static, immutable map containing relevant web sites

    private static final Map<String, String> fMap;

    static {

       /* Declaring the HashMap*/
        Map<String, String> aMap = new HashMap<String, String>();

       /* Adding elements to HashMap*/
        aMap.put("AB", "https://www.somewebsiteforAB.com/");
        aMap.put("CD", "https://www.somewebsiteforCD.com/");
        aMap.put("EF", "https://www.somewebsiteforEF.com/");
        aMap.put("GH", "https://www.somewebsiteforGH.com/");

        fMap = Collections.unmodifiableMap(aMap);        

       /* Display content using Iterator*/
        Set<Entry<String, String>> set = fMap.entrySet();
        Iterator<Entry<String, String>> iterator = set.iterator();

        while (iterator.hasNext()) {
            Entry<String, String> mentry = iterator.next();
        }
    }
}

上述类将使用类中的 System.out.println 语句打印所有或任何指定键的键和值。但是如何将动态生成的键传递给映射以提取相关值并将其传递回 JSP。

我是否需要编写另一个方法来接受键作为参数并将其传递给地图?

【问题讨论】:

  • 迭代map,根据key求值?
  • 你的 JSP 是怎么回事?什么是动态变量?你的问题很不清楚。

标签: java hashmap


【解决方案1】:

首先,您需要创建动态变量。例如:

<c:set var="myVar" value="AB"/>

一旦你有了这个,并且有了你的地图实例(我们称之为 fMap),你就可以像在 Java 中一样简单地调用它。例如:

<c:set var="myWebsite" value="${fMap.get(myVar)}"/>

您还需要一个公共的 Java 方法来允许您访问地图。例如:

public Map<String, String> getMap() {
    return fMap;
}

【讨论】:

    【解决方案2】:

    是的,您可以创建一个新方法来接收在您的 JSP 中显示的密钥。

    类似这样的:

    public String getValueWithKey(String keyFromJSP) {
        return fMap.get(keyFromJSP);
    }
    

    【讨论】:

    • 这非常有效。感谢您澄清我的想法。
    猜你喜欢
    • 2015-04-19
    • 2014-12-03
    • 2012-04-28
    • 2011-12-28
    • 1970-01-01
    • 2014-06-17
    • 2018-11-25
    • 2016-03-10
    • 1970-01-01
    相关资源
    最近更新 更多