【发布时间】:2020-05-19 15:03:42
【问题描述】:
我有两个类 Bill 和 Charge,如下所示。
class Bill {
private String id;
private List<Charge> charges;
// Getters Setters Constructors etc..
}
class Charge{
private String typeId;
private double a;
private double b;
// Getters Setters Constructors etc..
}
List<Bill> bills = new ArrayList<>();
Bill b1 = new Bill();
b1.setId("1");
List<Charge> charges = new ArrayList<>();
charges.add(new Charge("type-1",20,30));
charges.add(new Charge("type-2",30,30));
b1.setCharges(charges);
Bill b2 = new Bill();
b2.setId("2");
List<Charge> charges2 = new ArrayList<>();
charges2.add(new Charge("type-1",30,40));
charges2.add(new Charge("type-2",40,40));
b2.setCharges(charges2);
现在我有一个方法, 此方法应根据 typeId 平均 Charges,并且每个 typeId 仅返回一个 Charge
public Bill average(List<Bill> bills){
...
}
我希望这种方法返回如下所示的帐单
Bill{
id:null,
charges:[
{
typeId:"type-1",
a:25,
b:35
},
{
typeId:"type-2",
a:35,
b:35
}
]
}
这可以使用 for 或 forEach 循环来实现,但我希望解决这个 Streams api
【问题讨论】:
-
这可以使用 for 或 forEach 循环实现,请分享。
标签: java arraylist collections java-stream