更优化的方法来解决高效的插入和查找

时间:2017-10-04 16:56:36

标签: java algorithm sorting data-structures

我下面有一个片段。我必须实施addTradeprintTop

 public static void main(String args[] ) throws Exception {
        MostTraded mt = new MostTraded();
        mt.addTrade("IBM",  1000);
        mt.addTrade("AAPL",  500);
        mt.addTrade("NFLX",  600);
        mt.addTrade("AAPL",  900);

        mt.printTop(2); // AAPL 1400, IBM 1000
    }

这两种方法的签名如下:

public void addTrade(String instrument, int volume)
public void printTop(int count)

printTop的论据意味着打印那些交易量很大的股票。例如,printTop(2)将意味着前2交易股票。添加必须高效,这也意味着股票可以多次交易,在这种情况下volume需要更新。

我有以下想法来解决它,但不确定是否有更好的方法。

要实现有效添加查找和添加库存的值,我可以使用简单的HashMap<stockname, volume> 要执行printTop,我可以使用密钥为TreeMap且值为volume的{​​{1}}来跟踪。 显然,当我这样做Set<String>时,我也必须修改addTrade中的条目。

有没有更好的方法来解决同样的问题?

1 个答案:

答案 0 :(得分:0)

这取决于您要寻找的优化程度。如果您正在编写实时交易应用程序,您将希望它尽可能快。维护字符串集的TreeMap不会非常有效。您只想在N个项目中找到 top K 。因此,您需要partial sort algorithm。 C ++已经将部分排序方法作为标准;不幸的是,Java还没有。但你可以在网上找到第三方网站或自己写一个。

相关问题