Рефакторинг для l oop с использованием java 8 потоков - PullRequest
0 голосов
/ 17 января 2020

Я хочу заменить ниже для oop с java 8 потоков. Любая помощь будет высоко ценится. Спасибо.

OwnerEntity oEntity = new OwnerEntity();

// sorted set based on last change date descending order
Set<StatusModel> stsModels = getStatsModelSetSortedByChangeDateDesc();
for (int i = 0; i < stsModels.size(); i++) {
    StatusModel sts = stsModels.get(i);
    if (i == 0 && !sts.getStatus().equals("0")) {
        // only for first lelement in the list status is '0' then break
        //do not process the list further
        break;
    }
    // otherwise add the elements of the list to OwnerEntity Object

    if (sts.egtStatus() != null && (acctNumber.equalsIgnoreCase(sts.getAccountNumber()))) {
        oEntity.addStatusModel(sts);
    }
}

Ответы [ 2 ]

0 голосов
/ 19 января 2020

Я думаю, у вас должно быть 2 шага, сначала проверьте, если первый имеет статус, не равный 0

Если существует, чем фильтровать другие условия

    //retrive first element if status not 0
    List<StatusModel> result = new ArrayList<>();
    Optional<StatusModel> firstElement =
            stsModels.stream()
                    .findFirst()
                    .filter(f -> !f.getStatus().equals("0"));

    if(firstElement.isPresent()) {
    //other stream with logic
        result= stsModels.stream()
                .filter(f -> f.getStatus() != null
                        && accountnumber.equalsIgnoreCase(f.getGetAccountNumber()))
                .collect(Collectors.toList());
    }
0 голосов
/ 17 января 2020

Я бы предложил что-то вроде этого:

OwnerEntity oEntity = new OwnerEntity();

// sorted set based on last change date descending order
Set<StatusModel> stsModels = getStatsModelSetSortedByChangeDateDesc();

if (stsModels.size() > 0 && !stsModels.get(0).equals("0")) {
    stsModels.stream()
             .filter(sts -> sts.egtStatus() != null && (acctNumber.equalsIgnoreCase(sts.getAccountNumber())))
             .forEach(sts -> oEntity.addStatusModel(sts));
}
...