使用动态密钥从HashMap中提取值

时间:2017-10-26 13:28:13

标签: java hashmap

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

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

我通过另一个HashMap key生成代码(Java Class),该代码在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。

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

2 个答案:

答案 0 :(得分:2)

首先,需要创建动态var。例如:

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

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

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

您还需要一种可以访问地图的pulbic Java方法。例如:

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

答案 1 :(得分:1)

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

这样的事情:

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