testAList我有一個class對象列表TestA。我正在試驗 Java 流,我想要實現的是更新String b滿足檢查的列表中所有對象的屬性。class TestA { private String a; private String b;}到目前為止,我使用流所取得的成果如下:if(testAList!=null) { testAList.forEach(testA -> { if(testA.getA().equals("STREAMS") { testA.setB("JUST_TEST"); } });}我非常確定可以使用某些謂詞以更好的方式重寫此檢查,但無法找到正確的匹配項。我看到了filter,但不認為它可以使用,因為我想要完整的源代碼testAList(但在對象內部有一些更新)。任何提示就足夠了:)
1 回答

慕哥6287543
TA貢獻1831條經驗 獲得超10個贊
如果你真的必須這樣做,你可以這樣做:
testAList.stream()
.filter(testA -> "STREAMS".equals(testA.getA()))
.forEach(a -> a.setB("JUST_TEST"))
;
作為練習,您還可以創建一個“isStreams”方法:
boolean isStreams(TestA a) {
return "STREAMS".equals(a.getA());
}
//later
if(testAList!=null) {
testAList.stream().filter(this::isStreams).forEach(a -> a.setB("JUST_TEST"));
}
更進一步:
void setBToJustTest(TestA a) {
a.setB("JUST_TEST");
}
//later
testAList.stream().filter(this::isStreams).forEach(this::setBToJustTest);
這將“整齊地”從流表達式中去掉所有的細節。
除了“this”之外,您還可以在助手上靜態聲明它們并通過方法引用進行訪問,例如:TestAHelper::isStreams
添加回答
舉報
0/150
提交
取消