투자 클래스의 링크 목록도있는 포트폴리오 클래스가 있습니다 (예 : Google이 투자의 인스턴스 임), 각 투자에는 목록)을 각 거래에 대한 데이터와 비교합니다.Java - 목록 반복기가있는 연결된 목록의 특정 위치에 대한 참조를 반환합니다.
사용자가 (5K에 대해 Google 주식을 구입) 거래를하고 싶을 때 Google에서 투자가 investmentList에 이미 있는지 찾아야합니다. 그렇지 않으면 - 새로운 투자를 추가하고 (그것의 무역 역사를 위해 무역을 추가하십시오), 그것이하는 경우에 - Google의 tradeHistory 연결 목록에 다만 다른 연결을 추가하십시오.
문제가 - investList에서 google (투자 인스턴스)에 대한 참조를 반환하려면 findInvestment 메서드가 필요합니다. 그래서 trade 履歴를 업데이트 할 수 있습니다. 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을 사용하고 symbol을 "키"로 사용하면 findInvenstment 메소드를 작성할 필요가 없습니다. .contains() 및 .get()은 필요한 것을 제공합니다. – slambeth
그래, 좋은 대안이야, 고마워. – Niminim