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