Перебрать два списка и установить элемент из первого списка - PullRequest
1 голос
/ 29 мая 2020

У меня есть два ArrayList, как показано ниже -

certificates=[CERT1, CERT2]
promotions=[{type}, {type, promotionCode}, {type, promotionCode}]

promotions размер списка не подтвержден, но certificates размер списка подтвержден. Итак, рассмотрим размер первого списка 2, а размер второго списка 3

Я хочу установить promotionCode во втором списке из certificates, но во втором списке какое-то время promotionCode отсутствует.

for (int i = 0; i < getCertificateNumber().size(); i++) {
   if (!promotions().isEmpty()) {
       promotions().get(i).setPromotionCode(getCertificateNumber().get(i));
   }
}

как указано выше for loop он устанавливает только первые две акции в promotion list, потому что certificate list размер два

Как я могу избежать любого элемента из второго списка, у которого нет promotionCode и установите CERT для элемента, который имеет promotionCode

Ответы [ 2 ]

0 голосов
/ 29 мая 2020

Этот код отфильтровывает рекламные акции без кодов и ограничивает их количеством сертификатов, которые у нас есть. Затем вы можете запустить l oop, чтобы сопоставить коды с действующими рекламными акциями. Кроме того, в этом случае я бы запустил для l oop вместо validPromotions, а не certificates, потому что у нас может не быть действительных рекламных акций.

    List<Promotion> validPromotions = promotions.stream()
            .filter(x -> x.promotionCode != null) // only keep promotions that have valid promotion codes
            .limit(certificates.length) // only keep as many promotions as we have certificates for
            .collect(Collectors.toList());
0 голосов
/ 29 мая 2020

Вы можете добавить оператор if, чтобы проверить, не является ли промо-код нулевым, таким образом, чтобы избежать получения beyong CERT1:

int i = 0;
for ( Promotion prom : promotions ) {
    // check if promotioncode is not null
    if( prom.getPromotionCode() != null ) {
       prom.setPromotionCode(getCertificateNumber().get(i));
       i++; // increments only if not null
 }
}
...