Ich habe eine Portfolio-Klasse, die auch eine verknüpfte Liste der Investment-Klasse hat (Beispiel - Google ist eine Instanz der Investition), jede Investition hat eine Handelsgeschichte (eine andere verknüpft Liste) mit Daten für jeden Handel.Java - geben Sie einen Verweis auf eine bestimmte Stelle in einer Linkedlist mit Liste Iterator
Wenn der Benutzer einen Trade machen will (kaufen Sie Google-Aktien für 5K) Ich muss herausfinden, ob die Investition (in Google) bereits in der Investmentliste vorhanden ist. Wenn dies nicht der Fall ist - fügen Sie eine neue Investition hinzu (und fügen Sie den Trade für seine Handelshistorie hinzu), falls dies der Fall ist - fügen Sie einfach einen weiteren Link zur verknüpften Liste von Google TradeHistory hinzu.
Das Problem - Ich brauche findInvestment-Methode, um einen Verweis auf google (Investment-Instanz) aus der investmentList zurückzugeben, damit ich seine Handelshistorie aktualisieren kann. Die Methode gibt einen listIterator anstelle einer Referenz auf einen Speicherort in investmentList (sollte Investition sein Klasse). Wie korrigiere ich findInvestment? (Gefunden = iter ist falsch)
public class Portfolio {
private LinkedList<Investment> investmentsList;
public Portfolio() {
investmentsList = new LinkedList<Investment>();
}
public void addInvestment(String symbol, double money){
Investment invest = findInvestment(symbol);
if (invest == null) {
System.out.println("symbol does not exist");
getInvestmentsList().add(new Investment(symbol,money));
System.out.println("New invetment has been added to your portfolio - " +symbol);
} else {
invest.addTrade(symbol,money);
System.out.println("A new trade has been added to the current investment - " + symbol);
}
}
public Investment findInvestment(String symbol){
Investment found = null;
ListIterator<Investment> iter = investmentsList.listIterator();
while (iter.hasNext()) {
if (iter.next().getSymbol().equals(symbol)) {
found = iter;
return found;
System.out.println("Found the symbol");
}
}
return found;
}
Als eine alternative Lösung könnten Sie eine LinkedHashMap anstelle einer Liste verwenden und Symbol als "Schlüssel" verwenden, dann müssten Sie nicht wirklich die findInventsment-Methode schreiben. .contains() und .get() liefern Ihnen, was Sie brauchen. – slambeth
Ja, es ist eine gute Alternative, danke. – Niminim