我有一个投资组合类,也有投资类的链表(例如 - 谷歌是投资的一个实例),每个投资都有一个交易历史(另一个链表),每个交易的数据。
当用户想要进行交易(以5K购买谷歌股票)时,我需要查看投资(在Google中)是否已经存在于投资列表中。如果没有 - 添加新的投资(并为其交易历史添加交易),如果确实如此 - 只需添加另一个链接到谷歌的tradeHistory链表。
问题 - 我需要findInvestment方法从投资列表返回对谷歌(投资实例)的引用,以便我可以更新其交易历史。该方法返回一个listIterator而不是对investmentList中某个位置的引用(应该是投资类) )。我该如何纠正findInvestment? (发现= iter错了)
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;
}
答案 0 :(得分:3)
只需按住Investment
- 或在java 8中Optional<Investment>
而不是链表:
private Map<String, Investment> investmentsBySymbol;
public Investment findInvestment(String symbol){
Investment found = investmentsList.get(symbol);
return found;
}
同样BigDecimal是比双重更好的选择
new BigDecimal("3.10");
的精度为2,双精度始终不准确。
答案 1 :(得分:2)
像这样使用
while (iter.hasNext()) {
if ((found = iter.next()).getSymbol().equals(symbol)) {
System.out.println("Found the symbol");
return found;
}
}
答案 2 :(得分:2)
您已在代码中回答了问题!
if (iter.next().getSymbol().equals(symbol)) {
found = iter;
请参阅?
您正在调用iter.next(),它可以为您提供所需内容!所以,你必须在循环中重新编写代码,如:
Investment currentInvestment = iter.next();
if (currentInvestment.get...) {
found = currentInvestment;
println...
return found;
}
对于未来:请阅读您正在处理的课程的javadoc。他们通常会告诉您需要知道的一切!提示没有。 2:在返回语句之后有一个println 没有意义。
我倾向于说:让一些有经验的人审核您的代码。它不是马车;但是有一些事情可以改进;比如你使用double for currency(这总是一个可怕的想法);或者你的投资“模型”的事实......归结为表示其“符号”的字符串。这非常“低级”。