Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.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
Java 如何在没有嵌套迭代的情况下重写迭代?_Java_Java Stream - Fatal编程技术网

Java 如何在没有嵌套迭代的情况下重写迭代?

Java 如何在没有嵌套迭代的情况下重写迭代?,java,java-stream,Java,Java Stream,以下是我的迭代,但其中一个是嵌套的: objects.forEach(obj -> { if (obj.getType() == Type.APPLICATION) { clientApplicationPriorities.add(getClientApplicationPriority(obj.getApplicationShortInfo().getId(), clientId, priority, null))

以下是我的迭代,但其中一个是嵌套的:

        objects.forEach(obj -> {
            if (obj.getType() == Type.APPLICATION) {
                clientApplicationPriorities.add(getClientApplicationPriority(obj.getApplicationShortInfo().getId(), clientId, priority, null));
            } else if (obj.getType() == Type.FOLDER) {
                final FoldersShortInfo folderInfo = obj.getFolderShortInfo();
                final String folderName = folderInfo.getName();
                final List<ApplicationShortInfo> appInfos = folderInfo.getApplications();
                appInfos.forEach(appInfo -> clientApplicationPriorities.add(getClientApplicationPriority(appInfo.getId(), clientId, priority, folderName)));
            } else {
                throw new FolderRequestException();
            }
        });
objects.forEach(obj->{
if(obj.getType()==Type.APPLICATION){
添加(getClientApplicationPriority(obj.getApplicationShortInfo().getId(),clientId,priority,null));
}else if(obj.getType()==Type.FOLDER){
final FoldersShortInfo folderInfo=obj.getFolderShortInfo();
最后一个字符串folderName=folderInfo.getName();
最终列表appInfos=folderInfo.getApplications();
appInfos.forEach(appInfo->clientApplicationPriorities.add(getClientApplicationPriority(appInfo.getId(),clientId,priority,folderName));
}否则{
抛出新的FolderRequestException();
}
});
如何使用流API重写它

  • 请分享更多与代码实现相关的逻辑

  • 您应该使用switch case而不是if-elseif-else循环来获得更干净的代码

    List<Employee> objects = new ArrayList<Employee>();
     for (Employee emp : objects) {
    switch (emp.getType()) { 
     case Type.application: {
            clientApplicationPriorities.add(
                    getClientApplicationPriority(obj.getApplicationShortInfo().getId(), clientId, priority, null));
        }
        case Type.folder: {
            final FoldersShortInfo folderInfo = obj.getFolderShortInfo();
            final String folderName = folderInfo.getName();
            final List<ApplicationShortInfo> appInfos = folderInfo.getApplications();
            appInfos.forEach(appInfo -> clientApplicationPriorities
                    .add(getClientApplicationPriority(appInfo.getId(), clientId, priority, folderName)));
        }
        default: {
            throw new FolderRequestException();
        }
        }
    };
    
    List objects=new ArrayList();
    用于(员工emp:对象){
    开关(emp.getType()){
    案例类型.应用:{
    clientApplicationPriorities.add(
    getClientApplicationPriority(obj.getApplicationShortInfo().getId(),clientId,priority,null));
    }
    案例类型。文件夹:{
    final FoldersShortInfo folderInfo=obj.getFolderShortInfo();
    最后一个字符串folderName=folderInfo.getName();
    最终列表appInfos=folderInfo.getApplications();
    appInfos.forEach(appInfo->clientApplicationPriorities
    .add(getClientApplicationPriority(appInfo.getId(),clientId,priority,folderName));
    }
    默认值:{
    抛出新的FolderRequestException();
    }
    }
    };
    

  • 添加更多详细信息,以便用户可以进行测试并提出建议我假设您想要删除内部的
    appInfos.forEach()
    ?不需要开关。是的,这是一种良好的做法,但它不是“需要的”。还有,你没有回答这个问题。是的。我添加了评论以添加更多细节。而且,它使代码干净易懂,所以我建议使用switch。