@Snoyter

Как оптимизировать этот устасток кода?

Как оптимизировать этот запрос, чтобы нужно было ходить в бд всего один раз и на выходе получать карту из ключа Id товара и значения true, если в бд есть лицензия.

Код получения метода:
Map<Integer, Boolean> license = new HashMap<>();

       for (OverviewOffer offer: offers) {
            license.put(offer.getId(), licenseRepository.loadById(offer.getId()).equals(1));
        }


Псевдо код обращения к бд:
public Integer loadById(Integer id) {
       
        return id % 2 == 0 ? true : false ;
    }


Как видите я хожу в бд через цикл, а это плохо, но в голову ничего не приходит, как правильно это оформить.
Пытался как-то вот так
Map<Integer, Boolean> license = licenseRepository.loadByReferenceIds(ids).stream().collect(Collectors.toMap(Offer::getId, Должен быть Boolean))
Но хз как положить сам Boolean в значение.
  • Вопрос задан
  • 85 просмотров
Решения вопроса 1
xez
@xez Куратор тега Java
TL Junior Roo
Как-то так:
class Example {
    public static void main(String[] args) {
        var licenses = List.of(
                new License(1, true),
                new License(2, false),
                new License(3, true)
                );
        
        var licenseMap = licenses.stream()
                .collect(Collectors.toMap(License::getId, License::isActive));
    }

    @Getter
    @RequiredArgsConstructor
    private static class License {
        private final Integer id;
        private final boolean isActive;
    }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы