Comment utiliser Java 8 cours d'eau pour faire une nouvelle liste en utilisant une autre liste d'objets est des valeurs avec filtre?

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]]

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=280303&siteId=1
conseillé
Classement