希望有人能帮助我。我有以下结构的POJO:将一个嵌套的POJOs列表流式传输到另一个POJO列表
public class Invoice{
private String docNum;
private String customer;
private ArrayList<InvoiceDetails> invoiceDetails;
/* Getters and setters*/
}
并用以下
public class InvoiceDetails{
private String vatGroup;
private Double vatAmount;
private Double amount;
/* Getters and setters*/
}
另一个POJO再说我有第三个具有以下
public class VatType{
private String vatGroup;
private Double vatAmount;
private Double amount;
/* Getters and setters*/
}
我试图要做的是将的List
减小为VatType
的List
,按vatGroup分组。如SQL
中的de DISTINCT
子句一样。 比方说,我有以下列表:
InvoiceDetails idA1 = new InvoiceDetails("S1", 100.0, 40.0);
InvoiceDetails idA2 = new InvoiceDetails("S2", 140.0, 40.0);
InvoiceDetails idA3 = new InvoiceDetails("A1", 50.0, 10.0);
ArrayList<InvoiceDetails> listA = new ArrayList<>();
listA.add(idA1);
listA.add(idA2);
listA.add(idA3);
Invoice invoiceA = new Invoice();
invoiceA.setDetailList(listA);
InvoiceDetails idB1 = new InvoiceDetails("S1", 200.0, 50.0);
InvoiceDetails idB2 = new InvoiceDetails("S2", 240.0, 50.0);
InvoiceDetails idB2 = new InvoiceDetails("A1", 100.0, 20.0);
ArrayList<InvoiceDetails> listB = new ArrayList<>();
listB.add(idB1);
listB.add(idB2);
listB.add(idB3);
Invoice invoiceB = new Invoice();
invoiceB.setDetailList(listB);
List<Invoice> invoiceList = new ArrayList<>();
invoiceList.add(invoiceA);
invoiceList.add(invoiceB);
预期的结果将是VatType
的List
下列物品:
("S1",300.0,90.0)
("S2",380.0,90.0)
("A1",150.0,30.0)
我怎样才能使用在一个stream
拍这个名单。避免遍历Lists
? 在此先感谢
您是否检查Stream API? – Pelocho
从'InvoiceDetailes'和'VatType'提取共同部分到'CommonClass'可能是一个好主意,那么你可以在'List'上做操作,而不必转换列表vica-versa? –