根据条件使用Java Streams从一个对象中为一个字符串变量设值。

问题描述 投票:0回答:1

我是Java流的新手。我有一个代码片段,我需要使用java流写。我试图根据一个条件为一个字符串设置一个值。我试图寻找解决方案,并通过使用anyMatch进行实验,但是没有任何进展。

String loadAGENTID = "";
for(ReportGenerationParameter rgp : loadReportTableExt.getReportGenerationParameters()) {
    if (rgp.getKey().equalsIgnoreCase(RapFilter.IDUSR)) {
        loadAGENT_ID = rgp.getValue();
    }
}

在代码中要使用字符串loadAGENTID。欢迎任何建议。谢谢你的建议。

我试过使用 Arrays.streamanyMatch 遥遥无期

boolean todoName =
        Arrays.stream(loadReportTableExt.getReportGenerationParameters())
              .anyMatch(item -> item.getKey().equalsIgnoreCase(RapFilter.IDUSR));

if (todoName) {
    // want to set the value of the respective object.
    loadAGENT_ID = item.getValue();
}
java stream
1个回答
3
投票

使用 过滤 找到匹配的对象,然后用 findFirst 其中返回第一个匹配元素

String loadAGENTID  = loadReportTableExt.getReportGenerationParameters()
                                        .stream()
                                        .filter(rgp-> rgp.getKey().equalsIgnoreCase(RapFilter.IDUSR))
                                        .findFirst()
                                        .map(rgp->rgp.getValue())   // returns value from first matching element 
                                        .orElse("");  // none of them matched returns default value
© www.soinside.com 2019 - 2024. All rights reserved.