java - 如何使用 ArrayList 设置器加载对象
问题描述
我是初学者,我已经完成了这个项目。现在,我成功序列化了ArrayList中的对象,再次打开程序时,我希望程序加载数据。
但是,当我反序列化时,我使用另一个 ArrayList 并首先添加对象。然后,将其设置为原始的。它失败了。我不能再使用我的方法来调用它们。
我确信我正确地序列化了对象,我可以NimPlayer
在反序列化时使用 getter 调用它们。
我如何序列化和反序列化:
private void saveData() {
ArrayList<NimPlayer> playerList = nimModel.getPlayerList();
if (playerList.size() != 0) {
try {
FileOutputStream fileOut =
new FileOutputStream("players.dat.ser");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(playerList);
out.close();
fileOut.close();
System.out.printf("Serialized data is saved in players.dat.ser");
} catch (IOException i) {
i.printStackTrace();
}
} else {
System.out.println("There is no data to be stored.");
}
}
private void loadData(String fileName) {
NimModel nimModel = new NimModel();
try {
FileInputStream fis = new FileInputStream(fileName);
ObjectInputStream ois = new ObjectInputStream(fis);
ArrayList<NimPlayer> newPlayerList = (ArrayList<NimPlayer>)ois.readObject();
nimModel.setPlayerList(playerList);// I THOUGHT IT WOULD WORK
} catch (IOException i) {
i.printStackTrace();
return;
}
}
这是我的NimPlayer
课的一部分
public class NimPlayer implements Serializable {
private final String userName;
private String familyName;
private String givenName;
private int gamesPlayed;
private int gamesWon;
public NimPlayer(String userName, String familyName, String givenName) {
this.userName = userName;
this.familyName = familyName;
this.givenName = givenName;
this.gamesPlayed = 0;
this.gamesWon = 0;
}
//getter and setters
}
ArrayList 的 getter 和 setter 位于NimModel
:
public class NimModel {
private ArrayList<NimPlayer> playerList = new ArrayList<NimPlayer>();
public ArrayList<NimPlayer> getPlayerList() {
return new ArrayList<NimPlayer>(playerList);
}
public void setPlayerList(ArrayList<NimPlayer> playerList) {
this.playerList = playerList;
}
public void displayAllPlayers() {
Collections.sort(playerList, (NimPlayer p1, NimPlayer p2) -> {
return p1.getUserName().compareToIgnoreCase(p2.getUserName());
});
if (playerList.size() != 0) {
for (NimPlayer player : playerList) {
String userName = player.getUserName();
String familyName = player.getFamilyName();
String givenName= player.getGivenName();
int gamesWon = player.getGamesWon();
int gamesPlayed = player.getGamesPlayed();
System.out.println(userName + "," + familyName + "," + givenName + "," + gamesPlayed + " games," + gamesWon + " wins");
}
} else {
System.out.println("There is no players.");
}
}
}
非常感谢任何帮助
参考
Java 中 ArrayList 的 Getter 和 Setter
解决方案
推荐阅读
- reactjs - 组件重新渲染后无法使用 useState 挂钩更新 varaibale
- powershell - Powershell Rename-Item:路径中的非法字符
- python - 计划的爬虫(基于无头硒)运行后的僵尸火狐和 geckodriver 进程
- javascript - 连接MongoDB时的认证错误
- java - 初始化 JavaFX 运行时的 Oracle DataModeler 问题
- java - 我怎样才能使选择升序和降序问题的错误证明?
- java - 垂直滚动条没有出现
- pandas - 仅对具有特定列值的行求和
- c# - SerializeException : 试图反序列化一个空流错误
- react-native - Algolia 和 React Native FlatList ListHeaderComponent