Я передаю функцию в операции карты Java 8, и Intellij говорит мне, что ее можно заменить лямбда-выражением. Но я не понимаю, как это сделать без создания промежуточной структуры объекта.
Вот что я делаю:
List<DocumentResult> documentResults = objects.getObject().stream()
.map(new Function<ObjectType, DocumentResult>() {
@Override
public DocumentResult apply(ObjectType objectType) {
String[] keys = objectType.getStorageKey().getObjectName().split("/");
DocumentResult result = new DocumentResult(DocCategories.valueByLabel(keys[1]), DocCategoryGroups.valueByLabel(keys[2]), DocSubCategories.valueByLabel(keys[3]), keys[4], keys[5]);
result.setLink(objectType.getTempUrl().getFullUrl());
return result;
}
})
.collect(Collectors.toList());
И что я думаю, Intellij посоветует мне сделать:
List<DocumentResult> documentResults = objects.getObject().stream()
.map(object -> object.getStorageKey().getObjectName().split("/"))
.map(tab -> new DocumentResult(DocCategories.valueByLabel(tab[1]), DocCategoryGroups.valueByLabel(tab[2]), DocSubCategories.valueByLabel(tab[3]), tab[4], tab[5]))
.collect(Collectors.toList());
Я не знаю чистого способа получить часть objectType.getTempUrl().getFullUrl(), которую я извлек в своей анонимной функции, какие-либо предложения?