如何用forEach替换for循环

时间:2020-10-23 05:28:12

标签: java for-loop foreach

我的代码是

String Number = "123";
boolean NumberPresent = false;
List < Summary > smryList = smryListResponse.getSummaryList();

for (int i = 0; i < smryList.size(); i++) {
    if (Number.equals(smryList.get(i).getNumber())) {
        NumberPresent = true;
        break;
    }
}
if (NumberPresent) {
   //perform some actions
}

如何用for loop代替此完整的forEach功能?

3 个答案:

答案 0 :(得分:7)

这样,您可以申请每个循环。

for (Summary summary: smryList) {
    if (Number.equals(summary.getNumber())) {
        NumberPresent = true;
        break;
    }
    // ... 
}

答案 1 :(得分:2)

如果要检测是否显示了数字,则无需使用forforEach。您可以通过.anyMatch()方法使用流。
例如:

String number = "123";    
List<Summary> smryList = smryListResponse.getSummaryList();
boolean isNumberPresent = smryList
                           .stream()
                           .anyMatch(summary -> summary.getNumber().equals(number));
if (isNumberPresent) {
    // ...
}

此外,您可以尝试使用其他流方法(例如.filter()或其他方法)进行操作。但是我更喜欢使用.anyMatch()

备注:流和lambda表达式仅适用于 Java 8 以后。 否则,请使用已经发布的solution

答案 2 :(得分:0)

您可以用此循环替换for循环。

 for (Summary summary : smryList) {
            if (Number.equals(summary.getNumber())) {
                NumberPresent = true;
                break;
            }
        }

否则,您可以尝试

smryList.forEach(summary -> {//code here
        });