为了账号安全,请及时绑定邮箱和手机立即绑定

使用 java 流根据特定检查更新对象

使用 java 流根据特定检查更新对象

缥缈止盈 2023-06-28 16:11:39
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


查看完整回答
反对 回复 2023-06-28
  • 1 回答
  • 0 关注
  • 103 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信