Заменить анонимную функцию лямбда-выражением
3042 просмотра
1 ответ
Я передаю функцию в операции отображения 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 (), которую я получил в своей анонимной функции. Есть предложения?
Автор: bobuns Источник Размещён: 12.11.2019 09:28Ответы (1)
5 плюса
Решение
Вы всегда можете просто написать
List<DocumentResult> documentResults = objects.getObject().stream()
.map(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());
... просто используя обычную многострочную лямбду.
Автор: Louis Wasserman Размещён: 05.10.2015 06:35Вопросы из категории :
- java В чем разница между int и Integer в Java и C #?
- java Как я могу определить IP моего маршрутизатора / шлюза в Java?
- java Каков наилучший способ проверки XML-файла по сравнению с XSD-файлом?
- java Как округлить результат целочисленного деления?
- java Преобразование списка <Integer> в список <String>
- intellij-idea Прикрепление дополнительного javadoc в Intellij IDEA
- intellij-idea Intellij ярлык для быстрой иерархии вызовов
- intellij-idea Достижение горячего развертывания шва с помощью Intellij-idea
- intellij-idea Как добавить каталог в classpath в профиле запуска приложения в IntelliJ IDEA?
- intellij-idea Intellij reformat для сохранения файлов
- lambda Что такое лямбда (функция)?
- lambda Что предпочтительнее использовать в Python: лямбда-функции или вложенные функции ('def')?
- lambda C # Лямбда-выражения: зачем их использовать?
- lambda В чем разница между «закрытием» и «лямбдой»?
- lambda Завершение хронометража секундомера с делегатом или лямбдой?
- java-8 Введение в Java
- java-8 Когда скобки необязательны в лямбда-синтаксисе Java 8?
- java-8 Монады с Java 8
- java-8 Как определить метод, который принимает lambda в качестве параметра в Java 8?
- java-8 Как указать типы функций для void (не Void) методов в Java8?