Преобразование некоторой логики с использованием потока Java - PullRequest
2 голосов
/ 01 мая 2019

Я хотел бы преобразовать некоторую логику, используя Java8 Stream. Как мы должны изменить код?

public boolean isBFOrder(final BFReturn pReturnRequest) {
        ArrayList<BFReturnShip> shipGroupList =pReturnRequest.getShipGroupList();      
        Boolean bfOrder = false;
        for(BFReturnShip bfReturnShip : shipGroupList) {
            if(bfReturnShip.getModeOfReturn().equals(TYPE)) {
                bfOrder = true;
            } else {
                return false;
            }
        }
        return bfOrder;
    }

1 Ответ

5 голосов
/ 01 мая 2019
return pReturnRequest.getShipGroupList()
                     .stream()
                     .allMatch(i -> i.getModeOfReturn().equals(REFUND_ONLY));

При условии, что pReturnRequest.getShipGroupList() никогда не будет null.

Как указывает @Holger, мы можем улучшить вышеприведенный фрагмент, покрыв случай, когда список становится пустым.

final List<BFReturnShip> list = pReturnRequest.getShipGroupList();
return !list.isEmpty() && 
    list.stream().allMatch(i -> i.getModeOfReturn().equals(REFUND_ONLY));
...