laklaklak:
私は、次のものを持っています:
class AAA {
String A1;
String A2;
String A3;
String A4;
}
class BBB {
String A3;
String A4;
}
List<AAA> aaaList= new ArrayList<>(); // has 10 objects
私は、A1とA2の値が対等の場合にはBBBオブジェクトを持つ第二のリストを埋めるためにしたいです。このようなものはそう:
List<BBB> bbbList = aaaList.stream().filter(obj -> obj.getA1().equals(obj.getA2())).map(obj -> new BBB(obj.getA3(), obj.getA4())).collect(Collectors.toList());
しかし、これは仕事にのようになります正確にどのように全く分かりません...
WJS:
クラスは、適切なゲッター、セッターを持っていると仮定。コンストラクタは、シーケンス内の引数を取ります。
したがって、この:
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);
これを印刷します:
[BBB [A3=30, A4=40], BBB [A3=50, A4=60]]