java-forum.org - Java programmieren aus Leidenschaft
Java 6 Einstieg und professioneller Einsatz
Alter Preis: 34,90 EUR
Jetzt: 0,00 EUR

zzgl. Versandkosten

Zurück   java-forum.org - Java programmieren aus Leidenschaft > Java - Programmierung > Allgemeine Java-Themen

Allgemeine Java-Themen Allgemeine Themen, die nicht in andere Fachforen und nicht zu den Java Basics passen

Thema geschlossen    
Themen-Optionen Thema durchsuchen Ansicht
Alt 17.10.2008, 19:11   #1 (permalink)
Neuer Benutzer
Bit
 
Registriert seit: 17.10.2008
Fachbeiträge: 6
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Standard Serialisierung von Hashmap in Vector

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;
    }

}
KindOfAutomatic ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 17.10.2008, 20:01   #2 (permalink)
Stammbenutzer
Megabyte
 
Registriert seit: 14.04.2006
Fachbeiträge: 1.570
Abgegebene Danke: 7
Erhielt 65 Danke für 65 Beiträge
hat Game kein hashCode überschrieben ?
Fliegt ne Exception?
raiL ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 17.10.2008, 20:14   #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 ich
das erste mal HashMap benutze und mir vorher nix darüber durchgelesen habe .


Ich wäre durch dein Vorschlag auch drauf gekommen, Danke!

Mfg KindOfAutomatic
KindOfAutomatic ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 18.10.2008, 08:41   #4 (permalink)
Stammbenutzer
Halbes Gigabyte
 
Benutzerbild von Landei
 
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
__________________
... oder nimm einfach Scala! Bereit für die eSCALAtion?
Landei ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Thema geschlossen    

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
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

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:26 Uhr.


Powered by vBulletin® Version 3.8.6 (Deutsch)
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.2
Thanks for Smilies by smilies.4-user.de