【发布时间】:2014-04-28 07:52:09
【问题描述】:
我有一种方法可以搜索我的数据库并从条形表中获取所有值。获取返回的行并转换为条形对象并从条形创建股票对象。酒吧是股票的一个子类。
public Map<Stock, List<Bar>> findBars() throws Exception {
BarConverter barConverter = new BarConverter();
List<Bar> bars = new ArrayList<Bar>();
Map<Stock, List<Bar>> map = new HashMap<Stock, List<Bar>>();
// get rows from db
List<Map<String, Object>> rows = dbClient.get(tableName, null, null, "id");
for (Map<String, Object> row : rows) {
// get bar object from row
Bar bar = barConverter.setData(row, market);
bars.add(bar);
// set stock and map containing stock & bar
Stock stock = new Stock(bar.getTicker(), market, bar.getExchange());
map.put(stock, bars);
}
// return map
return map;
}
目前上述方法给出的输出类似于
{AAPL-US-NASDAQ=[AAPL,NASDAQ,2014-04-25,564.53,571.99,563.96,571.94,13000000,8.6174E8], GOOG-US-NASDAQ=[GOOG,NASDAQ,2014-04-25,1564.53,1581.99,263.96,371.94,13000000,1.6174E8], AAPL-US-NASDAQ=[AAPL,NASDAQ,2014-04-25,222.53,321.99,3121.96,571.94,13000000,8.6164E8] }
正如您在上面的输出中看到的,首先它们是带有条形值的苹果股票,然后是带有条形值的谷歌股票,然后是具有一些不同条形值的苹果股票。如何用一个键将这两个 Apple 条分组。即Map<Stock, List<Bar>>。
预期输出
{AAPL-US-NASDAQ=[{AAPL,NASDAQ,2014-04-25,564.53,571.99,563.96,571.94,13000000,8.6174E8}, {AAPL,NASDAQ,2014-04-25,222.53,321.99,3121.96,571.94,13000000,8.6164E8}], GOOG-US-NASDAQ=[GOOG,NASDAQ,2014-04-25,1564.53,1581.99,263.96,371.94,13000000,1.6174E8]}
【问题讨论】:
标签: java collections map multimap