Java正在尝试获取所有缓存

Java正在尝试获取所有缓存,java,caching,Java,Caching,我在我的小游戏中缓存了一些特定的玩家,现在在我的run方法中,我想检查缓存的每个人并给他们奖励,而不是GetAllPlayerOnline并检查他们是否在该地图中,我只是缓存了进入该地图的玩家 public static HashMap<Integer,MapleCharacter> fishlist = new HashMap<Integer,MapleCharacter>(); 现在,在我的跑步方法中,我尝试了

我在我的小游戏中缓存了一些特定的玩家,现在在我的run方法中,我想检查缓存的每个人并给他们奖励,而不是GetAllPlayerOnline并检查他们是否在该地图中,我只是缓存了进入该地图的玩家

public static HashMap<Integer,MapleCharacter> fishlist = 
               new HashMap<Integer,MapleCharacter>();
现在,在我的跑步方法中,我尝试了

                 if(UseChairHandler.fishlist.containsKey(chr.getId())) {
//do stuff

但它不起作用……有什么想法吗?

入口集允许您在整个地图上循环

for(Map.Entry<Integer,MapleCharacter> entry:fishlist.entrySet() ){
    //entry.value() is a MapleCharacter in the map
}
for(Map.Entry:fishlist.entrySet()){
//entry.value()是映射中的一个字符
}

添加更多调试输出。
System.err.println(fishlist)
可以创造奇迹。 chr.getId()是否总是返回正确的ID?
另外,如果你的游戏是多线程的,如果你没有正确同步对地图的访问,你会遇到问题。

“它不工作”--需要详细说明吗?即使我缓存了它,它也不会给我任何项目,我检查过,这部分是错误的。你验证过执行
鱼列表.put
行了吗?没有并发地图?你的应用程序是单线程的?整个地图?这意味着什么//entry.value()是地图中的一个字符在执行此操作之前,请找出地图为什么不缓存您认为应该缓存的内容。是chr.getId();总是返回正确的结果吗?如果你能为我创建一个同步方法来检查缓存的任何人,我会爱你并尝试从中学习!首先使用ConcurrentHashMap
for(Map.Entry<Integer,MapleCharacter> entry:fishlist.entrySet() ){
    //entry.value() is a MapleCharacter in the map
}