我有一份包含订单项目列表的订单
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呢?非常感谢
对于这个问题,您可以简单地使用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();
}
你可以这样做
Double sum = list.stream()
.filter(orderItem -> orderItem.getItemName().equals("john"))
.mapToDouble(OrderItem::getValue)
.sum();
假设您有一个订单项列表,我们可以按所有者名称对其进行分组,并作为下游收集器进行求和:
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列表中获取总和的最佳方法是什么? 我已经尝试了以下代码,但是我知道这不是正确的方法: 问题答案: 使用生成器表达式: