首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用java8特性实现for循环

使用java8特性实现for循环
EN

Stack Overflow用户
提问于 2021-05-20 20:09:01
回答 1查看 54关注 0票数 1

有没有人可以帮我用java8的特性来重组下面的代码。

这是我的代码。

代码语言:javascript
运行
复制
private List<CreateChildItemResponse> createChildItems(String[] childUpcNumbers, String[] childItemNbrs,
ItemVo parentItem, UserVo user, boolean isEnableReverseSyncFlag, Integer parentItemNbr, Long parentUpcNbr,int childUpcNbrsize, ItemManagerDelegate managerDelegate) throws NumberFormatException, ValidationException,ChildNotFoundException, ResourceException, ChildItemException {

        List<ItemVo> resultList = new ArrayList<ItemVo>();
        List<CreateChildItemAssortmentResponse> relations = null;
        CreateChildItemResponse response = new CreateChildItemResponse();

        try {
            for (int i = 0; i < childUpcNumbers.length; i++) {
                // parentItem.setItemNbr(itemNumberList.get(i));
                logger.info("-------Item Nbrs-----" + parentItem.getItemNbr());

                ItemVo child = createItemForMigration(
                        populateChildItemVo(parentItem, getGtin(childUpcNumbers[i]), Integer.valueOf(childItemNbrs[i])),
                        user, isEnableReverseSyncFlag, managerDelegate);// null scales for all except scales integration
                resultList.add(child);

            }
            relations = this.populateAssortmentRelationVo(parentItem.getItemNbr(), resultList);
            response = getSuccessResponse(parentItemNbr, relations, parentUpcNbr);
            // utx.commit();
        } catch (Exception e) {

            logger.info("Exception occurs while creating child item", e);
            relations = this.populateAssortmentRelationVoForException(e, resultList);
            response = getFailureResponseForException(parentItemNbr, relations, parentUpcNbr, e, resultList.size(),
                    childUpcNbrsize);
            finalResponse.add(response);
            throw new ChildItemException(e.getMessage(), finalResponse, e);
        }
        finalResponse.add(response);
        return finalResponse;
    }

在上面的代码中,我调用了下面的方法

代码语言:javascript
运行
复制
relations = this.populateAssortmentRelationVo(parentItem.getItemNbr(), resultList);

它的实现是

代码语言:javascript
运行
复制
private List<CreateChildItemAssortmentResponse> populateAssortmentRelationVo(Integer parentItemNumber,
            List<ItemVo> childs) {
        List<CreateChildItemAssortmentResponse> relationList = new ArrayList<CreateChildItemAssortmentResponse>();
        for (ItemVo child : childs) {
            CreateChildItemAssortmentResponse relation = new CreateChildItemAssortmentResponse();
            relation.setItemNbr(child.getItemNbr());
            relation.setUpcNbr(convertUpcToString(child.getEachGtin().getGtinNbr()));
            relation.setStatus("SUCCESS");
            relation.setMessage("");
            relationList.add(relation);
        }
        return relationList;
    }

在这里,我想获取populateAssortmentRelationVo()的构造函数,以及如何在其中使用流和映射器。

EN

回答 1

Stack Overflow用户

发布于 2021-05-20 20:56:24

首先声明一个映射函数:

代码语言:javascript
运行
复制
private CreateChildItemAssortmentResponse> itemVoToResponse(ItemVo item) {
    CreateChildItemAssortmentResponse response = new CreateChildItemAssortmentResponse();
    response.setItemNbr(item.getItemNbr());
    response.setUpcNbr(convertUpcToString(item.getEachGtin().getGtinNbr()));
    response.setStatus("SUCCESS");
    response.setMessage("");
    return relationList;
}

并简单地将一个列表的所有元素映射到另一个列表中:

代码语言:javascript
运行
复制
relations = resultList.stream()
                      .map(this::itemVoToResponse)
                      .collect(toList());
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67620067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档