繁体   English   中英

将带有 if 条件的嵌套 for 循环转换为 Java 8

[英]Converting nested for loop with if conditions to Java 8

我需要将下面的代码从 java 7 转换为 java 8。我尝试使用类 'Optional' 来简化它,但没有成功实现它。

        if(replacementResponse.getGroupResponse() != null)
        {
            for(GroupCommand groupCommand : replacementResponse.getGroupResponse().getValues())
            {
                String groupQuery = groupCommand.getName();
                for(Group group : groupCommand.getValues())
                {

                    if(!group.getResult().isEmpty())
                    {
                        SolrDocumentList solrDocuments = group.getResult();

                        List<SolrDocument> documentList = null;

                        if(result.get(groupQuery) != null)
                            documentList = result.get(groupQuery);
                        else
                            documentList = new LinkedList<>();

                        for(SolrDocument solrDocument : solrDocuments)
                        {
                            documentList.add(solrDocument);
                        }

                        result.put(groupQuery, documentList);
                    }

                }
            }
            return result;

        }
        return null;

我尝试将该方法拆分为 2 种方法,但我不知道如何在流中实现“可选”。

return Optional.ofNullable(replacementResponse.getGroupResponse())
                .map(replacementGroupResponse -> getGroupResponse(replacementGroupResponse.getValues())).orElse(null);

                    documentList = Optional.ofNullable(result.get(groupCommand.getName())).orElse(new LinkedList<>());


replacementGroupResponse.stream()
        .map(groupCommand -> groupCommand.getValues().stream()
                                         .filter(group -> !group.getResult().isEmpty()).

您可以尝试如下将您的 java 7 代码迁移到 java 8。可能会出现一些问题,因为我不知道许多类(如 SolrDocumentList、GroupCommand、Group 等)的实现。

  return Optional.ofNullable(replacementResponse.getGroupResponse()).map(a -> a.getValues().stream()
            .collect(Collectors.toMap(GroupCommand::getName,groupCommand -> groupCommand.getValues().stream()
                    .flatMap(group -> group.getResult().stream()).collect(Collectors.toCollection(LinkedList::new))))).orElse(null);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM