【问题标题】:how to replace for loop by forEach如何用forEach替换for循环
【发布时间】:2020-10-23 05:28:12
【问题描述】:

我的代码是,

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
}

如何用forEach 替换这个完整的for loop 功能?

【问题讨论】:

  • 我投票结束这个问题,因为这显然是一项家庭作业,您应该先向我们展示您的尝试。
  • 是的,看起来像一个家庭作业问题。我想原始海报的第一个问题是:“用一句话告诉我这段代码在做什么。”
  • @David Brossard :我知道如何用 foreach 替换 for 循环,但我目前的功能也有 break 语句。我想知道我们如何使用 break 和 foreach ?

标签: java for-loop foreach


【解决方案1】:

这样您就可以应用 for-each 循环。

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

【讨论】:

    【解决方案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

    【讨论】:

      【解决方案3】:

      你可以用这个循环替换for循环。

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

      否则你可以试试

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

      【讨论】:

        猜你喜欢
        • 2019-04-04
        • 2018-08-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-12
        • 1970-01-01
        • 1970-01-01
        • 2013-07-08
        相关资源
        最近更新 更多