J'espère que quelqu'un pourra m'aider. J'ai un POJO avec la structure suivante:Flux d'une liste de POJO imbriqués vers une autre liste de POJO
public class Invoice{
private String docNum;
private String customer;
private ArrayList<InvoiceDetails> invoiceDetails;
/* Getters and setters*/
}
Et une autre POJO avec les éléments suivants
public class InvoiceDetails{
private String vatGroup;
private Double vatAmount;
private Double amount;
/* Getters and setters*/
}
D'ailleurs, j'ai un troisième avec le
suivantpublic class VatType{
private String vatGroup;
private Double vatAmount;
private Double amount;
/* Getters and setters*/
}
Ce que je suis en train faire est de réduire un List
de Invoice
à un List
de VatType
groupé par vatGroup. Comme de DISTINCT
clause dans SQL
. Disons que j'ai la liste suivante:
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);
Le résultat attendu serait un List
de VatType
avec les éléments suivants:
("S1",300.0,90.0)
("S2",380.0,90.0)
("A1",150.0,30.0)
Comment puis-je obtenir cette liste en utilisant un stream
en un seul coup. Éviter de parcourir le Lists
? Merci à l'avance
Avez-vous vérifié l'API Stream? – Pelocho
Peut-être une bonne idée d'extraire les parties communes de 'InvoiceDetailes' et' VatType' dans un 'CommonClass', alors vous pouvez faire des opérations sur' Liste 'et ne pas avoir à convertir les listes vica-versa? –