Korrekter Gedanke zur HashMap?

wavefront6

Mitglied
Hallo,

ich schreibe gerade ein kleine Program zur Verwaltung von Aktien, was soweit auch funktioniert.
Nun hatte ich vor, zu jeder Aktie noch mehrere Daten (String für Datum, Double für Preis) zu speichern um quasi ein Kursverlauf zu simulieren.
Ich habe nun in meinem Konstruktor eine HashMap wie folgt angelegt:
Java:
HashMap<String, Double> valueHistory = new HashMap<String, Double>();

Im späteren Verlauf wollte ich mit den Daten aus der HashMap einen JFreeChart füttern.

Meine Frage ist, ob es mit einer HashMap sinnvoll ist oder ob es andere "bessere" Wege gibt.

Viele Grüße,
w
 
Die Frage ist, was du willst?

Dar Ansatz ist etwas verwirrend, weil du damit nur eine Aktie behandeln kannst.

Ich schiesse mal etwas ins Blaue und tippe einfach was ... siehe unten

Bemerkungen:
Datum als String ist ungeeignet, aber das lasse ich jetzt mal so
HashMap ist nicht sehr gut geignet, weil du die Ausgabe selber sortieren musst. Die HashMap garantiert nur, dass pro Datum nur ein Kurs gespeichert wird.

(Für die geübteren Leser - ich würde das anders lösen, bin aber vorerst möglichst nahe an der Vorgabe geblieben)

Java:
import java.util.HashMap;

public class Aktie {
	private HashMap<String, Integer> kursverlauf;
	int mValor;
	
	public Aktie(int pValor) {
		kursverlauf = new HashMap<String, Integer>();
		mValor = pValor;
	}
	
	public void addWert(String pDatum, int pWert) {
		kursverlauf.put(pDatum, pWert);
	}
	
	public HashMap<String, Integer> getWerte() {
		return kursverlauf;
	}
}

Java:
import java.util.HashMap;

public class Portfolio {

	private HashMap<Integer, Aktie> mAktien = new HashMap<Integer, Aktie>();

	public void addAktie(int pValor) {
		mAktien.put(pValor, new Aktie(pValor));
	}

	public Aktie getAktie(int pValor) {
		return mAktien.get(pValor);
	}

	public void addKurs(int pValor, String pDatum, int pWert) {
		mAktien.get(pValor).addWert(pDatum, pWert);
	}

	public static void main(String[] args) {
		Portfolio mPortfolio = new Portfolio();
		mPortfolio.addAktie(1);
		mPortfolio.addAktie(2);
		mPortfolio.addKurs(1, "12.02.2011", 11);
		mPortfolio.addKurs(1, "13.02.2011", 15);
		mPortfolio.addKurs(1, "13.02.2011", 16); // Der Wert 15 wird überschrieben
		mPortfolio.addKurs(1, "13.2.2011", 15); // es wird ein neuer Datensatz gespeichert!
		mPortfolio.addKurs(1, "14.02.2011", 13);
		mPortfolio.addKurs(2, "12.02.2011", 21);
		mPortfolio.addKurs(2, "13.02.2011", 25);
		mPortfolio.addKurs(2, "14.02.2011", 23);
	}
}
 

Zurück
Oben