投資クラスのリンクリストも持つPortfolioクラスを持っています(例:Googleは投資のインスタンスです)、各投資はリスト)を各取引のデータと比較します。Java - リストイテレータでリンクリスト内の特定の場所への参照を返します
ユーザーがトレードをしたい場合(Googleの株式を5Kで購入する場合)、investment(Googleでの投資)がinvestmentListに既に存在するかどうかを調べる必要があります。そうでない場合は、新しい投資を追加し(そしてその貿易履歴の取引を追加する)、そうであれば、GoogleのtradeHistoryリンクリストに別のリンクを追加するだけです。
問題点 - investmentListからgoogle(投資インスタンス)への参照を返すためにfindInvestmentメソッドが必要です。そのため、私はその貿易履歴を更新できます。このメソッドはinvestmentListの場所への参照ではなくlistIteratorを返しますクラス)。どのようにfindInvestmentを修正する必要がありますか?
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;
}
代わりに、リストではなくLinkedHashMapを使用し、シンボルを「キー」として使用すると、findInvenstmentメソッドを書く必要はありません。 .contains()、.get()は必要なものを提供します。 – slambeth
ええ、それはいい代案です、ありがとう。 – Niminim