如何打破多个 foreach 循环? [复制]

2023-12-24

我有四个 foreach 循环,它们遍历集合并根据条件执行某些操作。

这是我现在正在编写的代码:

boolean breakFlag = false;
String valueFromObj2 = null;
String valueFromObj4 = null;
for(Object1 object1: objects){
  for(Object2 object2: object1){
    // I get some value from object2
    valueFromObj2 = object2.getSomeValue();
    for(Object3 object3 : object2){
      for(Object4 object4: object3){
       // Finally I get some value from Object4.
       valueFromObj4 = object4.getSomeValue();
       // Compare with valueFromObj2 to decide either to break all the foreach loop
       breakFlag = compareTwoVariable(valueFromObj2, valueFromObj4 );
       if(breakFlag){break;}
      } // fourth loop ends here
      if(breakFlag){break;}
    } // third loop ends here
    if(breakFlag){break;}
  } // second loop ends here
  if(breakFlag){break;}
} // first loop ends here

主要对象(代码中的对象)来自第三方提供商 SDK,因此我无法更改该部分的任何内容。我想询问 Stack Overflow 社区是否有更好的方法来打破所有四个 foreach 循环。或者是否有其他方法可以重构此代码以使其更具可读性和可维护性。


在最外层循环上使用标签,并将该标签包含在break当你想跳出所有循环时声明。在下面的示例中,我修改了您的代码以使用标签OUTERMOST:

String valueFromObj2 = null;
String valueFromObj4 = null;
OUTERMOST: for(Object1 object1: objects){
  for(Object2 object2: object1){
    //I get some value from object2
    valueFromObj2 = object2.getSomeValue();
    for(Object3 object3 : object2){
      for(Object4 object4: object3){
        //Finally I get some value from Object4.
        valueFromObj4 = object4.getSomeValue();
        //Compare with valueFromObj2 to decide either to break all the foreach loop
        if( compareTwoVariable(valueFromObj2, valueFromObj4 )) {
          break OUTERMOST;
        }
      }//fourth loop ends here
    }//third loop ends here
  }//second loop ends here
}//first loop ends here
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何打破多个 foreach 循环? [复制] 的相关文章

  • 使用 java 删除 XML 根的子级

    这是我的 xml 文件
  • 无论线程如何,对象是否总是能看到其最新的内部状态?

    假设我有一个带有简单整数计数变量的可运行对象 每次可运行对象运行时该变量都会递增 该对象的一个 实例被提交以在计划的执行程序服务中定期运行 class Counter implements Runnable private int coun
  • 不区分大小写的 array_unique

    我正在尝试编写几行代码来创建一个不区分大小写的数组唯一类型函数 这是我到目前为止所拥有的 foreach topics as value lvalue strtolower value uvalue strtolower value if
  • 了解 netty 通道缓冲区和水印

    我正在尝试了解网络缓冲区和水印 作为一个测试用例 我有一个 netty 服务器 它向客户端写入数据 客户端被阻止 基本上每次读取之间有 10 秒的睡眠时间 在正常 I O 下 如果接收方被阻塞 TCP 发送方将受到限制 由于流量控制 发送速
  • Java 小程序在 Mac 上闪烁

    这个问题很奇怪 问题并非在每个平台上都会发生 我在使用 MacOSX 的 Google Chrome 中出现了这种情况 但在 Safari 中却没有出现这种情况 对于使用 Windows 的朋友来说 在 Google Chrome 上运行得
  • 如何将本机数据库运算符 (postgres ~) 与 JPA 标准生成器一起使用?

    我使用 JPA 2 0 标准构建以下查询 简化 select n from notif n where n message b la 我正在使用 postgresql 数据库 我真的需要 运算符 而不是像 我可以使用与 CriteriaBu
  • H2数据库:如何进行加密保护,而不暴露文件加密密钥

    我们在服务器模式下使用Java H2数据库 因为我们不希望用户访问数据库文件 为了对数据库文件添加更多保护 我们计划使用 AES 加密 将 CIPHER AES 添加到数据库 URL 以防存储被盗 但是 每个用户在连接时还需要提供文件保护密
  • Java Junit 测试 HTTP POST 请求

    我需要测试以下方法而不改变方法本身 该方法向服务器发出 POST 方法 但我需要制作一个独立于服务器的测试用例 在将其重定向到本地文件之前 我测试了类似的方法 但为此我将协议指定为文件 主机名指定为 localhost 端口指定为 1 我的
  • 使用 Jena 查询维基数据

    目前 Wikidata 有一个 SPARQL 端点 https query wikidata org https query wikidata org 我想使用 Jena 3 0 1 查询此网站 我使用以下代码 但收到错误消息 端点返回的
  • 对对象集合进行排序[重复]

    这个问题在这里已经有答案了 如果我有一个简单的字符串列表 List
  • 在拇指上方显示修改后的 JSlider 值

    有没有一种简单的方法可以在使用某些 外观和感觉 的同时更改 JSlider 上方标签中显示的值 为了清楚起见 我正在谈论这个值 具体来说 我想显示除以 1000 的值而不是值本身 我知道如果我显示它们 我可以为刻度设置标签 但用户将不得不猜
  • 如何在Netbeans中设置JList的ListModel?

    我在 Netbeans IDE 的帮助下设计了一个 Swing GUI 该 GUI 包含一个 JList 默认情况下 它使用 QAbstractListModel 将其作为 JList 构造函数中的参数传递以创建该 JList 我想在 Ne
  • 如何让“循环”泛型在 Java 中工作?

    我在编译以下涉及一些泛型的代码时遇到错误 public abstract class State
  • JPA Web 应用程序管理策略

    我们目前正在开发一个 J2EE Web 应用程序 使用 JPA 作为我们的数据访问层 我们目前正在研究几种不同的策略来在我们的应用程序中利用缓存 Create an EntityManager per request 在请求范围内获取缓存
  • Hibernate 标准接受 %% 值

    我正在使用下面的 Hibernate 代码来过滤workFlowName crt add Restrictions like workFlowName workFlow MatchMode ANYWHERE crt is the crite
  • 无法连接到docker中的elasticsearch容器

    我正在尝试使用 docker 的官方 elasticsearch 镜像 我遵循了本指南 https www elastic co guide en elasticsearch reference current docker html但是当
  • 检查按钮是否可用?如果没有,请等待 5 秒钟,然后再次检查?

    基本上我想看看此刻是否可以单击按钮 如果没有我想再试一次 所以我需要某种 goto 函数来返回到代码的前一行 尽管我怀疑我写得非常糟糕 但它本来可以做得更容易 try driver findElement By xpath button i
  • 我怎样才能限定我不“拥有”的自动装配设置器

    要点是 Spring Batch v2 测试框架具有JobLauncherTestUtils setJob与 Autowired注解 我们的测试套件有多个Job类提供者 由于这个类不是我可以修改的东西 我不确定如何限定它自动连接的作业 每个
  • 如何在J2ME中获取数字的幂[重复]

    这个问题在这里已经有答案了 可能的重复 J2ME power double double 数学函数实现 https stackoverflow com questions 2076913 j2me powerdouble double ma
  • 如何使用socket.io发送图像文件(二进制数据)?

    我无法从以下位置发送数据Android Client to NodeJS Server I use Socket IO 客户端 https github com socketio socket io client java我的客户端中的ja

随机推荐

  • 根据 Pandas DataFrame 中的其他列值在列之间移动行值

    我有一个熊猫数据框 其中包含生物体名称及其抗生素敏感性列表 我希望根据以下规则将所有生物体合并到下面数据框中的一列中 如果 ORG1 A 则不执行任何操作 如果 ORG1 A 且 ORG2 A 则将 ORG2 值移至 ORG1 列 如果 O
  • 绘制振幅

    我想知道是否有人可以向我指出一个好的教程或向我展示如何绘制字节数组的幅度图 我使用的音频格式是 U LAW 8000 0 Hz 8 位 单声道 1 字节 帧 听起来您对短期平滑 RMS 幅度测量感兴趣 通常 要执行此操作 您需要输入信号的整
  • 使 JButton 表现得像 JMenu

    我有以下 JMenuBar 代码 此代码取自免费的 java 程序调用JGuiD https sourceforge net projects jguid 并出于个人目的进行编辑 import javax swing import java
  • 在 Visual Studio 2015 Community RTM 中为 ASP.NET 5 项目启用 SSL

    Most tutorials suggest that you can enable SSL for the website by going to properties of the project and then ticking th
  • ObjectAnimator 像素化 TextView

    我在 Samsung GT N5110 android 版本 4 1 2 中放大 TextViews 和 Checkboxes 时遇到问题 放大 TextView 后出现下图 里面有 textview 我想放大它我确实尝试在开发人员选项中启
  • Haskell Prelude.read:无法解析字符串

    来自哈斯克尔的例子http learnyouahaskell com types and typeclasses http learnyouahaskell com types and typeclasses ghci gt read 5
  • 如何获取Azure ResourceManagementClient对象的标签

    我正在尝试使用 ResourceManagementClient 类获取资源组的标签列表 Microsoft Azure Management Resources 2 14 1 预览版 添加自包管理器控制台 ResourceManageme
  • 如何在 MongoDB shell 中将 NumberLong 转换为 Date?

    我将 unix 时间戳存储为 MongoDB 的NumberLongtype 毫秒 如何在 Mongo shell 中转换为人类可读的日期字符串 供我自己将来参考 并结合其他答案 db mycollection aggregate matc
  • 如何横向显示 AutoCompleteTextView 建议

    AutoCompleteTextView 在纵向模式的下拉列表中显示建议 我想在对话框或横向模式的下拉列表中显示建议 这里 EditText 和键盘全屏显示 我应该在适配器中使用哪种布局才能在横向模式下将提示显示为对话框 我目前正在使用an
  • 如何从 Web 应用程序中找出 ASP.NET 中的会话大小?

    如何从 Web 应用程序中找出 ASP NET 中的会话大小 如果您尝试在运行时而不是在调试跟踪中获取会话的大小 您可能需要尝试如下操作 long totalSessionBytes 0 BinaryFormatter b new Bina
  • 在 matplotlib 中设置图例中标签部分的样式

    是否可以有part特定风格的传说文本 比方说 bold or italic 写在之间 强制 matplotlib 解释它 import matplotlib pyplot as plt plt plot range 10 range 10
  • 如何仅循环批处理脚本一定的次数?

    如何仅循环批处理脚本一定次数 x10 或其他 如果代码是 echo off loop1 Start taskmgr exe Goto loop loop2
  • HttpRuntime.Cache.Add 中的值为 Null

    我想为其中的一些键存储 nullHttpRuntime Cache因为我不想再次进入数据库发现没有该密钥的条目 所以第一次 它会进入数据库并填充缓存 目的是使用缓存数据来服务以下调用 而不是执行数据库调用 这是我正在使用的代码 Info i
  • 在javascript中访问ruby数组

    我想在 javascript 中访问 Ruby 数组 请告诉我这样做的方法 我的数组保存了 sql 查询的结果 contacts Contact order contacts position ASC 我正在尝试这样做 for var i
  • 导入 F2Py 模块时如何“捕获”段错误?

    一些背景 其相关性可能会波动 我目前拥有一些 F2Py 库 F2Py 从一些 Fortran 代码编译的 Python 模块 出于所有意图和目的 您可以将这些模块视为 第三方 我目前无法访问 Fortran 源代码 并且我不负责编译过程 这
  • 如何将 shell 变量导出到所有会话?

    我想知道有没有办法将我的 shell 变量导出到系统中的所有会话 不仅仅是当前会话 我不想在 bashrc 文件中设置它 因为 shell 变量是动态变量 它会不时更改 您可以通过在调试中设置陷阱来设置会话以继续重新读取磁盘上的文件 bas
  • 如何在 ASP.NET 项目中设置无限会话超时?

    我正在开发一个 ASP NET 项目 如何增加会话超时 无限超时 或者我应该在 IIS 上执行此操作 如果可以的话请解释一下 您可以设置session timeout in web config如下所示 该值显示分钟 因此您可以根据需要设置
  • CSS 中报告部分样式列表编号?

    现在我了解了 正常 CSS 列表样式 罗马 拉丁等 当然在过去的几年里 它们在不允许诸如以下内容方面有些不灵活 a or a only a 现在我相信你可以通过 before 和 after 伪元素得到像上面这样的效果 那是对的吗 如果可以
  • 如何填充seaborn分布图中曲线下的面积

    我有两个变量 x 1 883830 7 692308 8 791209 9 262166 y 5 337520 4 866562 2 825746 6 122449 我想使用 matplotlib 包装的 seaborn 来拟合高斯分布 似
  • 如何打破多个 foreach 循环? [复制]

    这个问题在这里已经有答案了 我有四个 foreach 循环 它们遍历集合并根据条件执行某些操作 这是我现在正在编写的代码 boolean breakFlag false String valueFromObj2 null String va