У меня есть метод, который ищет мою БД и получает все значения из таблицы баров. Возьмите возвращенные строки и преобразуйте их в стержневые объекты и создайте складской объект из стержня. Бар является подклассом акций.
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 со значениями столбцов, затем акции Google со значениями столбцов и снова акции Apple с некоторыми другими значениями столбцов. Как сгруппировать эти две панели 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]}