首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

java Map的奇怪有关问题

2012-12-23 
java Map的奇怪问题public class ContextHolder {public static MapString, ScriptSession onlineUsers

java Map的奇怪问题

public class ContextHolder {public static Map<String, ScriptSession> onlineUsers = new HashMap<String, ScriptSession>();public static void removeMapItemByKey(Map map,Object key){Iterator<Map.Entry<Object, Object>> it = map.entrySet().iterator();          while(it.hasNext()){              Map.Entry<Object, Object> entry=it.next();              Object k=entry.getKey();              if(key.equals(k)){                  //System.out.println("delete this: "+k+" = "+key);                  it.remove();        //OK               }          }}}
?

?

我这里有个好奇怪的问题,我用一个静态的HashMap(onlineUsers),用来记录在线的用户,当一个用户登录系统时就onlineUsers.put(userName,ScriptSession),进入这个HashMap,然后当一个用户退出系统时就通过removeMapItemByKey(Map map,Object key)这个方法来删除HashMap内的这个用户,但现在来了一个比较奇怪的问题,就是我要历遍这个HashMap时没有拿到东西,用onlineUsers.size()是有50多个的!知道问题系边吗?!?

?

历遍的方法为

JsonObject jo = new JsonObject();String onlineUser = "";Map<String, ScriptSession> m = new IdentityHashMap<String, ScriptSession>();Iterator it = ContextHolder.onlineUsers.entrySet().iterator();while (it.hasNext()) {        Map.Entry<String, ScriptSession> pairs = (Map.Entry<String, ScriptSession>)it.next();        m.put(pairs.getKey(),pairs.getValue());    }    it = m.entrySet().iterator();    while (it.hasNext()) {        Map.Entry<String, ScriptSession> pairs = (Map.Entry<String, ScriptSession>)it.next();        onlineUser += "".equals(onlineUser)?"'"+pairs.getKey()+"'":",'"+pairs.getKey()+"'";    }jo.addProperty("onlineUser", "["+onlineUser+"]");json = jo.toString();
?

?

前台看到的 这个json{onlineUser:[]};

热点排行