laklaklak:
Je les choses suivantes:
class AAA {
String A1;
String A2;
String A3;
String A4;
}
class BBB {
String A3;
String A4;
}
List<AAA> aaaList= new ArrayList<>(); // has 10 objects
Je veux remplir la deuxième liste des objets BBB en cas des valeurs A1 et A2 sont égaux. Donc, quelque chose comme ceci:
List<BBB> bbbList = aaaList.stream().filter(obj -> obj.getA1().equals(obj.getA2())).map(obj -> new BBB(obj.getA3(), obj.getA4())).collect(Collectors.toList());
Mais aucune idée de comment exactement cela devrait ressembler au travail ...
WJS:
En supposant que les classes ont les getters appropriées, setters. Les constructeurs ont des arguments en séquence.
Donc ça:
List<AAA> listAAA =
new ArrayList<>(List.of(new AAA("1", "2", "3", "4"),
new AAA("1", "1", "30", "40"),
new AAA("5", "6", "3", "4"),
new AAA("1", "2", "3", "4"),
new AAA("4", "4", "50", "60")));
List<BBB> listBBB = listAAA.stream()
.filter(ob -> ob.getA1().equals(ob.getA2()))
.map(ob -> new BBB(ob.getA3(), ob.getA4()))
.collect(Collectors.toList());
System.out.println(listBBB);
Imprimerait ceci:
[BBB [A3=30, A4=40], BBB [A3=50, A4=60]]