设置和获取Java Hashmaps

时间:2016-11-14 15:09:11

标签: java hashmap

我想创建一个包含两个String值的HashMap。第一个字符串值是" Mode"并且第二个字符串值是某些" State"例如:

" TRACK"模式是"禁用"

我想创建一个具有多个已定义模式的HashMap,其中包含" State"与每个改变相关联的" ENABLED"或者"禁用"。这就是我到目前为止所做的:

public class SystemModeStatus{

    private Map<String String> map = new HashMap<String,String>(){
        {
        put("MODE_A", "STATE");
        put("MODE_B", "STATE");
        put("MODE_C", "STATE");
        }
    };

    public SystemModeStatus(Map<String, String> m){
        this.map = m;
    }

    public Map<String, String> getMap(){
        return this.map;
    }
}

现在我想做的是检索/设置&#34;状态&#34;每个&#34; Mode&#34;。但是,我似乎无法找到正确的语法..我正确接近这个吗?有什么事情我做错了会让我的过程复杂化吗?

谢谢。

2 个答案:

答案 0 :(得分:3)

首先,你应该删除select count(*) from report_tb where report_id in (select report_id from id_tmp) 方法,因为你想在内部地图上公开尽可能少的方法。

然后,您可以添加方法来更新地图中的值:

getMap()

此处有更多信息:https://docs.oracle.com/javase/8/docs/api/java/util/Map.html

答案 1 :(得分:2)

如果你想获得每个“模式”的“状态”,你可以使用foreach,如果你正在使用java8,你可以使用迭代器:

  public static void printState(Map mp) {
        Iterator it = mp.entrySet().iterator();
        while (it.hasNext()) {
            Map.Entry pair = (Map.Entry)it.next();
            System.out.println("State : "+ pair.getValue());

        }
    }
例如,在您的Main类中,您可以这样做:

 SystemModeStatus systemModeStatue = new  SystemModeStatus()
 printState(systemModeStatue.getMap());