Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java8流重构循环_Java_Java Stream_Refactoring - Fatal编程技术网

使用Java8流重构循环

使用Java8流重构循环,java,java-stream,refactoring,Java,Java Stream,Refactoring,我想用Java8流替换下面的for循环。任何帮助都将不胜感激。多谢各位 OwnerEntity oEntity = new OwnerEntity(); // sorted set based on last change date descending order Set<StatusModel> stsModels = getStatsModelSetSortedByChangeDateDesc(); for (int i = 0; i < stsModels.size(

我想用Java8流替换下面的for循环。任何帮助都将不胜感激。多谢各位

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);
    }
}
OwnerEntity oEntity=新的OwnerEntity();
//根据上次更改日期降序排序的集合
Set stsModels=getStatsModelSetSortedByChangeDateDesc();
对于(int i=0;i
我建议如下:

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));
}
OwnerEntity oEntity=新的OwnerEntity();
//根据上次更改日期降序排序的集合
Set 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));
}

我认为您应该有两个步骤,首先检查first have status是否不等于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,则检索第一个元素
列表结果=新建ArrayList();
可选第一元素=
stsModels.stream()
.findFirst()
.filter(f->!f.getStatus().equals(“0”);
if(firstElement.isPresent()){
//具有逻辑的其他流
结果=stsModels.stream()
.filter(f->f.getStatus()!=null
&&accountnumber.equalsIgnoreCase(f.GetAccountNumber())
.collect(Collectors.toList());
}

为什么要这样做?“我想用java 8流替换下面的for循环。”-为什么查看代码,循环中有一个
中断
。不能在
流中表示的。事实上,使用
Stream
s时,无法保证处理顺序请阅读: