当前位置: 首页 > 知识库问答 >
问题:

对象列表中属性值的总和[重复]

曾宏毅
2023-03-14

我有一份包含订单项目列表的订单

public class OrderItem {
  private long itemId;
  private String itemName;
  private String ownerName;
  private double value;

  // all the related constructors, mutators and accessors are included.
}

如果在这个列表中我有以下项目

OrderItem(1,"item1","John",12.00);
OrderItem(2,"item2","John",385.00);
OrderItem(3,"item3","John",20.00);
OrderItem(4,"item4","Doe",19.00);

我想计算订单所有者名称相同的值之和。

e、 g.如果所有者名称为“John”,则返回417.00,如果名称为“Doe”,则返回19.00。

我怎么能通过小溪Java呢?非常感谢

共有3个答案

华知
2023-03-14

对于这个问题,您可以简单地使用For-each循环来迭代列表,如果所有者名称与您要查找的名称匹配,则将其添加到求和中。

double sum = 0;
for (OrderItem item: yourListName){
    if (item.getOwnerName().equals(nameYoureSearchingFor))
        sum+=item.value;
}

如果要使用迭代器,可以使用:

OrderItem item;
        double sum = 0;
        Iterator<OrderItem> iterator = list.stream().iterator();
        while(iterator.hasNext()){
            item = iterator.next();
            if (item.getOwnerName().equals(nameYoureLookingFor))
                sum+= item.getValue();
        }
吴同
2023-03-14

你可以这样做

  Double sum = list.stream()
            .filter(orderItem -> orderItem.getItemName().equals("john"))
            .mapToDouble(OrderItem::getValue)
            .sum();
臧兴学
2023-03-14

假设您有一个订单项列表,我们可以按所有者名称对其进行分组,并作为下游收集器进行求和:

List<OrderItem> items = List.of(
              new OrderItem(1,"item1","John",12.00);
              new OrderItem(2,"item2","John",385.00);
              new OrderItem(3,"item3","John",20.00);
              new OrderItem(4,"item4","Doe",19.00));

Map<String, Double> result = items.stream()
        .collect(Collectors.groupingBy(OrderItem::ownerName,
                 Collectors.summingDouble(OrderItem::value)));

结果映射中,我们可以通过所有者名称获取每个值:

System.out.println(result.get("John")); //prints 417.00
 类似资料:
  • 我有一堂课如下 如果我有一个列表作为

  • 问题内容: 我有一个包含许多对象的ArrayList。我想对相同属性名称的值进行求和。 示例数据为 ProfitAndLossDataDO的* 对象 * 结果将是(人相同时的值总和)- 逻辑类 ProfitAndLossDataDO 谢谢 问题答案: 我会遍历列表并将结果收集在地图中: 编辑: Java 8对接口的增强使我们能够以一种稍微更优雅的方式来实现此方法,中间是令人讨厌的代码块:

  • 问题内容: 我有一个包含许多对象的ArrayList。我想对相同属性名称的值进行求和。 示例数据为 ProfitAndLossDataDO的* 对象 * 结果将是(人相同时的值总和)- 逻辑类 ProfitAndLossDataDO 谢谢 问题答案: 我会遍历列表并将结果收集在地图中: 编辑: Java 8对接口的增强使我们能够以一种稍微更优雅的方式来实现此方法,中间是令人讨厌的代码块:

  • 问题内容: 当存在时,是否有可能获得全部列表?是否为此准备了电话,还是我必须编写一个foreach循环,如: 问题答案: Java 8及更高版本: 如果需要确保得到结果,则必须将最后一行更改为: Java 7及以下版本: Java 8之前的标准集合API不支持这种转换。您必须编写一个循环(或将其包装在您自己的“地图”函数中),除非您使用一些更高级的集合API /扩展。 (您的Java代码段中的行正

  • 假设有一个类: ...您有一个实例列表,即

  • 问题内容: 可以说我有一个具有属性的类。 从Python列表中获取总和的最佳方法是什么? 我已经尝试了以下代码,但是我知道这不是正确的方法: 问题答案: 使用生成器表达式: