猿问

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

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(但在对象内部有一些更新)。


任何提示就足够了:)


缥缈止盈
浏览 104回答 1
1回答

慕哥6287543

如果你真的必须这样做,你可以这样做:testAList.stream()         .filter(testA -> "STREAMS".equals(testA.getA()))         .forEach(a -> a.setB("JUST_TEST"))         ;作为练习,您还可以创建一个“isStreams”方法:boolean isStreams(TestA a) {    return "STREAMS".equals(a.getA());}//laterif(testAList!=null) {    testAList.stream().filter(this::isStreams).forEach(a -> a.setB("JUST_TEST"));}更进一步:void setBToJustTest(TestA a) {    a.setB("JUST_TEST");}//latertestAList.stream().filter(this::isStreams).forEach(this::setBToJustTest);这将“整齐地”从流表达式中去掉所有的细节。除了“this”之外,您还可以在助手上静态声明它们并通过方法引用进行访问,例如:TestAHelper::isStreams
随时随地看视频慕课网APP

相关分类

Java
我要回答