基本上,我正在MVC中制作一个yahtzee游戏。它工作正常,但是当我尝试保存游戏会话时,它不会保存包含玩家的游戏对象和阵列列表。这不会停止执行,这肯定会清除游戏的数组列表。 基本上,游戏的实例有以下字段:Java不能在Array列表中存储对象
public String name;
public int numberOfPlayers;
public ArrayList<Player> players = new ArrayList<>();
int playerListIndex;
ArrayList<Boolean> checkable;
StandardRules yahtzeeRule = new StandardRules();
public int rounds;
public String date;
球员ArrayList中包含有它自己的领域和gettters/setter方法的对象播放器的实例。
我已经成功地追踪问题不保存时,我调用的方法:
public void saveGame(Game thisGame) {
DB.saveGame(thisGame);
}
这反过来又调用类:
public class DB {
private static ArrayList<Game> savedGames = new ArrayList<>();
/**
* Saves the passed member into the database.
* @param game, the member to be saved.
*/
public static void saveGame(Game game) {
for (Game g : savedGames) {
if (g.name.equals(game.name)) {
savedGames.remove(g);
savedGames.add(game);
}
else {
savedGames.add(game);
}
}
}
游戏存档方法主要检查的数组列表如果名称已经存在,则保存游戏,如果它删除旧游戏并添加新游戏。如果没有这个名字的游戏,它只是将游戏添加到列表中。 (我可能稍后会实现MYSQL DB,但为了确保程序首先运行,我想用arraylist来测试)
我的印象是我需要一个静态参考数据库以确保我试图一直访问相同的数据库,而不是混淆数据库的实例。
我在这里做错了什么?
看你的代码,我觉得HashMap的会比ArrayList好。每次不必迭代。 – Sunny