首页 新闻 会员 周边 捐助

Java中有关HashMap的应用

0
悬赏园豆:10 [已解决问题] 解决于 2016-01-19 20:53

数据库的表translate有code和name两个字段,程序代码中,

private static Map<String,String> cnEnMap=new HashMap<String,String>();

public static Map<String,String> getCnEnMap(){
    if(cnEnMap.size()<1)
        initEnCnMap();
    return cnEnMap;
}

private static void initEnCnMap(){

    try{
        String enCnSql="select a.CODE,a.NAME from translate a";
        List enCnList=jdbc.executeParameterizedQuery(enCnSql, new Object[]{});

        if(enCnList!=null&&enCnList.size()>0){

            for(Object obj:enCnList){
                List temp=(List)obj;
                cnEnMap.put(StringUtil.toString(temp.get(1),true),                                                       StringUtil.toString(temp.get(0), true));
              }
        }
    } catch (Exception e){
        e.printStackTrace();
    }

}

当表translate中增加一条数据"new,新"时,hashmap未能及时更新,用getCnEnMap().get(new)没有得到“新”的信息。

解析数据时,不可能每一条数据都要重新查询数据库,不然map存在的意义就不大了,所以都设置成了static的。

怎么解决这个问题?

可乐泥巴的主页 可乐泥巴 | 初学一级 | 园豆:186
提问于:2015-08-17 14:34
< >
分享
最佳答案
0

当然没新数据了。。你插入数据的时候,去维护这个map了么?

 

要想能查到,就需要你插入数据库的时候同时插入缓存。。。解决这个问题。。。最简单的就是把你的这个类提供一个put方法,用于put到map中。另外,如果是多线程程序,别用map。不然会出问题。

 

收获园豆:10
洛城秋色 | 菜鸟二级 |园豆:324 | 2015-08-17 14:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册