Я новичок в лямбда-выражениях Java и столкнулся со следующей проблемой:
У меня есть список объектов меток, поля идентификатора которых являются единственными ключами, которые я хочу извлечь из другого списка карт.
[
{
"objectid": 10,
"eventsourceid": 6,
"fieldid": "ACQUIRE"
},
{
"objectid": 13,
"eventsourceid": 6,
"fieldid": "HASSVALIM"
}
]
Список карт имеет следующую структуру
[
{
"ACQUIRE": "1.42541559",
"PERMCONVERGENT": "CaSPC3",
"PVP": 133.88,
"HASSVALIM": "67A4",
"LASTUPDATE": "2018-10-10T13:38:11.000Z"
},
{
"ACQUIRE": "2.1327",
"PERMCONVERGENT": "Calp3",
"PVP": 23.18,
"HASSVALIM": "1A24",
"LASTUPDATE": "2018-10-10T13:38:11.000Z"
},
{
"ACQUIRE": "1.12459",
"PERMCONVERGENT": "CaSPC3",
"PVP": 33.58,
"HASSVALIM": "653",
"LASTUPDATE": "2018-10-10T13:38:11.000Z"
},
]
Я хочу извлечь из Списка карт только значения, требуемые в первом Списке ( fieldid ), и сгенерировать Список для последующего генерирования CSV, поэтому появление моего желаемого Списка будет:
{
[1.42541559, 67A4],
[2.1327, 1A24],
[1.12459, 653],
}
Я получил желаемый результат итерации следующим образом.
List<Map<String, Object>> dataMapList = this.getTableMap();
List<CatalogLabel> columnsLabel = this.getCatalogtypelabel(objectid);
List<String[]> body = new ArrayList<>();
for(Map<String,Object> map:dataMapList) {
String[] row = new String[columnsLabel.size()];
int index=0;
for(CatalogLabel label:columnsLabel) {
if(map.containsKey(label.getFieldid())) {
row[index++] = map.get(label.getFieldid()).toString();
}
}
body.add(row);
}
Интересно, можно ли получить другой результат, используя лямбда-выражения (поток, фильтр, сбор, отображение и т. Д.).