![]() |
|
|
|||||||
| Allgemeine Java-Themen Allgemeine Themen, die nicht in andere Fachforen und nicht zu den Java Basics passen |
|
|
|
Themen-Optionen | Thema durchsuchen | Ansicht |
| #1 (permalink) | |
|
Neuer Benutzer
Bit
Registriert seit: 17.10.2008
Fachbeiträge: 6
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
Hallo erstmal im Forum.
Jetzt zu meinem Problem : Ich muss für die Schule ( keine Hausaufgabe ) ein Programm schreiben mit dem man die Punkte einzelner Schüler verwalten kann.Soweit ist das Programm fertig, es fehlt noch die Serialisierung. Und genau hier liegt mein Problem. Alle nötigen Klassen implementieren Serializable Ich habe in der Klasse PlayerManager ein Vector<Player> der alle Spieler verwaltet. In der Klasse Player hab ich eine weitere Klasse GameScore die eine HashMap<Game,Long> enthält, die die Punkte den einzelnen Spielen zuordnet. Ich speichere also den Vector<Player>ab, und lade ihn wieder. Die HashMap<Game,Long> wird aber nicht wieder geladen, alle Punkte der einzelnen Player sind auf null. Werden die Daten von der HashMap einfach nicht gespeichert, oder liegt es an der Serialisierung?? Hier noch die Klassen GameScore und PlayerManager : Code:
package de.mueller.game;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Vector;
import de.mueller.swing.frame.JScoreFrame;
public class PlayerManager {
private final static Vector<Player> players = new Vector<Player>();
private static PlayerManager manager;
private PlayerManager() {
}
public static void savePlayers(File path) {
ObjectOutputStream out = null;
FileOutputStream fos = null;
try {
fos = new FileOutputStream(path);
out = new ObjectOutputStream(fos);
out.writeObject(players);
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
fos.close();
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void loadPlayers(JScoreFrame f, File path) {
FileInputStream in = null;
ObjectInputStream oin = null;
Vector<Player> players = new Vector<Player>();
try {
in = new FileInputStream(path);
oin = new ObjectInputStream(in);
players = (Vector<Player>) oin.readObject();
PlayerManager.setDataModel(players);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
f.getDataInputTable().updateUI();
f.getViewTable().updateUI();
oin.close();
in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
private static void fillPlayers() {
players.add(new Player("Max Mustermann", "10"));
}
public static Vector<Player> getDataModel() {
if (players.isEmpty()) {
fillPlayers();
}
return players;
}
public static void setDataModel(Vector<Player> newplayers) {
players.removeAllElements();
for (Player p : newplayers) {
players.add(p);
}
}
@Deprecated
public static void addPlayer(Player p) {
players.add(p);
}
@Deprecated
public static void removePlayer(int index) {
players.remove(index);
}
public static Player getPlayer(int index) {
return players.get(index);
}
}
Code:
package de.mueller.game;
import java.io.Serializable;
import java.util.HashMap;
public class GameScore implements Serializable {
/**
*
*/
private static final long serialVersionUID = -2404163886339637L;
private HashMap<Game, Long> scores = new HashMap<Game, Long>();
/**
* TODO Documentation
*
* @param scores
* the scores to set
*/
public void setScores(HashMap<Game, Long> scores) {
this.scores = scores;
}
private long lastKnownScore = 0L;
public HashMap<Game, Long> getScores() {
return scores;
}
public Long getScoreFor(Game g) {
return scores.get(g);
}
public void addScoreFor(Game g, long score) {
scores.put(g, scores.get(g) + Math.round(score * g.getFactor()));
lastKnownScore = (score);
}
public GameScore() {
System.out.println("Called");
scores.put(Games.DOSENWERFEN, 0L);
scores.put(Games.FREIWURF, 0L);
scores.put(Games.HULAHOOP, 0L);
scores.put(Games.RINGWERFEN, 0L);
scores.put(Games.SEILSPRINGEN, 0L);
scores.put(Games.TORWAND, 0L);
}
public void ensureScoreFilled() {
System.out.println("ensureScoreFilled");
System.out.println(scores.get(Games.TORWAND));
for (int i = 0; i < Games.getGames().length; i++) {
if (scores.get(Games.getGames()[i]) == null) {
scores.put(Games.getGames()[i], 0L);
}
}
}
public String length() {
return scores.size() + "";
}
public long getLastKnownScore() {
return lastKnownScore;
}
}
|
|
|
| #3 (permalink) | |
|
Neuer Benutzer
Bit
Themenstarter
Registriert seit: 17.10.2008
Fachbeiträge: 6
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
Jetzt funktionierts.
Ich hab grad nochmal mein Buch rausgepackt und geguckt was man für die HashMap braucht. Game hatte kein hashCode überschrieben. Ich hab immer so banale Fehler . Es liegt wahrscheinlich auch daran, dass ichdas erste mal HashMap benutze und mir vorher nix darüber durchgelesen habe .Ich wäre durch dein Vorschlag auch drauf gekommen, Danke! ![]() Mfg KindOfAutomatic |
|
|
| #4 (permalink) | |
|
Stammbenutzer
Halbes Gigabyte
Registriert seit: 06.04.2005
Fachbeiträge: 5.439
Blog-Einträge: 15
Abgegebene Danke: 193
Erhielt 687 Danke für 564 Beiträge
|
Kleine Regel:
-wenn equals überschrieben, dann auch hashCode -wenn hashCode überschrieben, dann auch equals -wenn compareTo überschreiben, dann auch equals und hashCode |
|
|
|
| Themen-Optionen | Thema durchsuchen |
| Ansicht | |
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| wie greife ich auf hashmap in vector zu | noisebreath | Allgemeine Java-Themen | 9 | 11.12.2008 13:36 |
| Serialisierung und Deserialisierung einer HashMap | zco | Allgemeine Java-Themen | 17 | 23.10.2008 16:52 |
| Array, Vector, HashMap, Properties, TreeMap | Variablen Erklärung | Java Basics - Anfänger-Themen | 1 | 18.05.2007 08:25 |
| Vector in HashMap bearbeiten | ich² | Java Basics - Anfänger-Themen | 5 | 03.03.2006 09:41 |
| Collection Vector speichern mittels Serialisierung? | Peter_S | Java Basics - Anfänger-Themen | 2 | 17.10.2004 10:13 |
| Lesezeichen |
|
|