Как преобразовать приведенный ниже метод в встроенную функцию Java 8? - PullRequest
0 голосов
/ 21 декабря 2018

Мне нужно конвертировать ниже метод Java 8 встроенной функции.Нужна помощь специалиста и объяснение, чтобы сделать это.

@Override
public boolean a(final Collection<DoseDetailMutableDTO> detailModels) {
    for (DoseDetailMutableDTO dd : detailModels) {
         final boolean doseDetailTextScheduled = isDoseDetailTextScheduled(dd, 1);
         if (doseDetailTextScheduled) {
             return true;
         }
    }
    return false;
}

и есть ли какой-нибудь способ сделать это в IDE intelj?

Ответы [ 3 ]

0 голосов
/ 21 декабря 2018

Мы можем попробовать использовать поток здесь:

@Override
public boolean a (final Collection<DoseDetailMutableDTO> detailModels) {
    return detailModels.stream()
               .filter(x -> isDoseDetailTextScheduled(x, 1))
               .findFirst()
               .orElse(false);
}

На самом деле, чтобы сделать ваш метод null безопасным, в случае, если список ввода может быть null, мы можем попробовать это:

@Override
public boolean a (final Collection<DoseDetailMutableDTO> detailModels) {
    return Optional.ofNullable(detailModels)
                   .map(Collection::stream)
                   .orElseGet(Stream::empty)
                   .filter(x -> isDoseDetailTextScheduled(x, 1))
                   .findFirst()
                   .orElse(false);
}
0 голосов
/ 21 декабря 2018

Вы можете использовать anyMatch для этого.Поскольку второй параметр функции является константой, вы можете написать метод, который вызывает isDoseDetailTextScheduled.Я думаю, что это становится еще более кратким:

public boolean a(final Collection<DoseDetailMutableDTO> detailModels) {
   return detailModels.stream().anyMatch(this::isDoseDetailTextScheduledOne);
}

public boolean isDoseDetailTextScheduledOne(DoseDetailMutableDTO dto) {
    return isDoseDetailTextScheduled(dto, 1);
}
0 голосов
/ 21 декабря 2018

Вы можете использовать Stream.anyMatch как:

public boolean a(final Collection<DoseDetailMutableDTO> detailModels) {
    return detailModels.stream()
                       .anyMatch(dd -> isDoseDetailTextScheduled(dd, 1));
}

возвращает true, если какие-либо элементы потока соответствуют предоставленному предикату, в противном случае false

Редактировать : (из комментариев)

Элемент управления для изучения таких предлагаемых сочетаний клавиш в IntelliJ IDEA составляет Ctrl+Space или на MacOS также можно использовать Alt+Enter.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...