我試圖通過設定具有最大值的物件來回傳串列。
List<One> myList1 = getDetails();
我想檢查“家庭”串列并將具有最大“fId”的元素保留在現有元素之外。
下面是嘗試的示例代碼,它拋出TargetInvocationException
myList1.forEach(myList1 -> myList1.getFamily().stream()
.max(Comparator.comparingLong(Family::getFId))
.stream().findFirst()
.orElse(null));
示例類:
@Data
class One{
private Long mId;
private String mPolicyName;
private List<Family> family;
}
@Data
class Family{
private Long fId;
private String fname;
private String fStatus;
}
uj5u.com熱心網友回復:
你有幾件事錯了。首先,forEach()什么都不做。其次,Comparator正在比較fId哪個是 的屬性Family,而不是One。最后,max()回傳 anOptional而你不需要.stream().findFirst()。
假設該類One有一個 setter 方法setFamily(List<Family> family),您可以執行以下操作:
myList1.forEach(one -> one.setFamily(one.getFamily().stream()
.max(Comparator.comparingLong(Family::getFId))
.stream().toList()));
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/378267.html
上一篇:java中int%=2行的回傳,以及陳述句的實際行為
下一篇:正則運算式在簽名后不會停止
