首页 > 解决方案 > 在java中添加项目整数值

问题描述

我有关于以下模式的数据,我只想添加类似项目的数量并存储在列表中。而像这样的项目quantity= 1, ingredient=chicken, unit =kg,单位将始终为kg。我有List<itemsDTO> 我想从这个列表中添加类似的项目。[{1,"kg","chicken"} , {2.2,"kg","beaf"} , {0.25,"kg","chicken"}]

public class itemsDTO {

    double quantity;
    String unit;
    String ingredient;

}

我试过这段代码

        List<itemsDTO> itemsDTOList = new ArrayList<>();
            for (int i = 0; i < itemsDTOList.size(); i++) {
            for (int j = 0; j < itemsDTOList.size(); j++) {

                if (itemsDTOList.get(i).getIngredient().equalsIgnoreCase(itemsDTOList.get(j).getIngredient())) {
                    int sum;
                    sum = itemsDTOList.get(i).getQuantity() + itemsDTOList.get(j).getQuantity();
                }
            }

        }



预期产量 1.25 公斤鸡肉,2.2 公斤牛肉

标签: javaarraysjava-8

解决方案


您可以将toMap收集器与合并功能一起使用:

BinaryOperator<itemsDTO> sumQuantity = (a, b) -> {
        a.setQuantity(a.getQuantity() + b.getQuantity());
        return a;
    };
itemsDTOList.stream()
    .collect(Collectors.toMap(itemsDTO::getIngredient, Function.identity(), sumQuantity))
    .values();

推荐阅读