Java-不从HashMap中删除
好的,我有这个HashMapJava-不从HashMap中删除,java,hashmap,Java,Hashmap,好的,我有这个HashMap private Map<String, Player> players = new HashMap<String, Player>(); 我说红色是因为现在只是个测试。我稍后会得到最终正确的答案。无论如何 我用这个来检查 if (e.getKeyCode() == KeyEvent.VK_Q) { for (Player playert : players.values()) {
private Map<String, Player> players = new HashMap<String, Player>();
我说红色是因为现在只是个测试。我稍后会得到最终正确的答案。无论如何
我用这个来检查
if (e.getKeyCode() == KeyEvent.VK_Q) {
for (Player playert : players.values()) {
c.append("\n < "+playert.getUsername() + " > ");
}
}
当你点击Q。。。您正在检查
players
的内容,但是对destroy()
的调用在哪里?您是否在代码中的任何地方显式调用destroy()
?换句话说,您的方法在您希望调用它的时候没有被调用?你应该使用。destroy()
仅在相关对象符合GC条件和/或关闭整个浏览器实例(因此不仅是当前页面/选项卡)时调用。只要浏览器实例运行,JVM就可以一直运行。您可能还应该发布代码,说明在登录时如何/何时将播放器添加到players
对象。以及实际调用destroy方法的代码。当用户退出applet所在的网页时,会调用destory方法。我编辑了我的帖子,以包含玩家登录时发生的情况。这里不需要仅仅因为问题已经解决就“删除”你的问题。它可以帮助其他有类似问题的人。但它现在不起作用的原因是我又犯了一个错误。不过,你还是应该选择stop()
。到底是什么问题?现在解决了吗?顺便说一句,现在我再次阅读了您的代码,可能是模糊的代码,但是您是否意识到applet实例根本不在不同的访问者之间共享?
if (e.getKeyCode() == KeyEvent.VK_Q) {
for (Player playert : players.values()) {
c.append("\n < "+playert.getUsername() + " > ");
}
}
< Dan >
< Dan >
< Red >
< Dan >
< Red >
public void playerLogin() throws IOException {
Random roll = new Random();
int newNo = roll.nextInt(200);
// me.getUsername() = "Guest #" + roll.nextInt(110);
// String me.getUsername() = getParameter("name");
me = new Player();
me.setUsername(getParameter("name"));
me.setPlayerImage(ImageIO.read(getClass().getResource("me.gif")));
me.setX(256);
me.setY(256);
me.setMap(1);
me.setCommand("move");
players.put(me.getUsername(), me);
repaint();
System.out.println(me.getUsername() + " was added. player: " + me);
os.println(me.getUsername() + "|" + me.getX() + "|" + me.getY() + "|"
+ me.getMap() + "|" + me.getCommand());
attack = 4;
defense = 5;
gold = 542;
level = 1;
exp = 53;
}