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:[]};
分享到:
相关推荐
- **清理并重新构建项目**:有时候,项目的编译缓存可能会导致各种奇怪的问题。尝试执行“Project”->“Clean...”清理项目,然后通过“Project”->“Build Automatically”重新构建。 ##### (2)更新MyEclipse -...
在探讨Java编程中可能出现的各种奇怪行为时,"Java Puzzlers"系列提供了一系列短小精悍的示例代码,旨在揭示那些初看之下难以理解的行为背后的原因。这些示例通常包含简短的程序,通过展示它们的运行结果来引导读者...
GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收...
TreasureMap自述文件描述TreasureMap是网站的单页Web应用程序克隆,其中包含公开发布的文章,详细介绍了世界各地奇怪而有趣的地方。主要特点: 用户可以: 登录后查看文章,以及创建,更新和删除文章按名称,城市或...
String result = names.stream().map(String::toLowerCase).collect(Collectors.joining(", ")); ``` 3. **改进的垃圾回收器**(ZGC:Epsilon GC 和 Shenandoah) - **Epsilon GC**:这是一种无收集器,即几乎不...
双击以安装它们,然后持续按住按钮,直到出现问题为止。 如果您看到地图,那么您来对地方了。 如果您不在Windows上,或者没有足够的花哨来存放这些可执行文件,只需双击主目录中的.jar文件,如果已安装 (建议使用...
在这个名为“奇怪的人Hadoop MapReduce程序”的主题中,我们将会深入探讨MapReduce的工作原理、其在Java中的实现以及如何通过实例来理解这一概念。 MapReduce的核心思想是将大规模的数据处理任务分解为两个主要阶段...
Array的配置项目没有上面介绍的那么直观,默认情况下DWR装载所有的基本类型和可装载的对象,这些包括String,Date等先前介绍的类型.java高级程序员可能会理解为什么match的这行有点奇怪. [Z"/> [B"/> [S"/> [I"/> [J"/>...
手机端浏览起来会有点奇怪技术栈前端:jQuery+map.baidu+Encharts+jQCloud+layui后端:SpringBoot+Mysql8.23+Thymeleaf+Mongodb+Mybatis+PageHelper+HttpClient&Jsoup+selenium网站分析页面url分析...
得到教训使用开关。 switch (s.charAt(i)) { case 'M': doThing()...从地图中删除密钥: map.remove(key) 尝试更多地思考问题。 拿出边箱? 很奇怪它必须是HashSet。 Set<Character> set = new HashSet<>();单词“从
6. **对Hibernate的疑问和问题**:`对hibernate的疑问.txt`和`hibernate中奇怪的问题.txt`可能是作者在学习和实践过程中遇到的难点或异常情况,这些问题可能涉及到懒加载(lazy loading)、代理对象、事务管理等复杂...
- A选项 `sum=sum-sum`:该表达式虽然看起来有些奇怪,但语法上是正确的,它将`sum`的值减去自身的值,最终结果是0,因此是一个有效的赋值语句。 - B选项 `x+2=x+2`:此表达式试图将`x+2`的结果赋值给`x+2`,这在...
FreeMarker 手册 .......................................................................................................... 1 用于 FreeMarker 2.3.18 .......................................................
前言................................................................................................................................. 7 什么是FreeMarker? ................................................