如何在java中打破一个函数

时间:2017-07-05 13:37:14

标签: java

伙计们我是java的初学者...我想创建一个循环遍历hashmap的函数,例如它包含


BeginTransaction
  Update Tbl1
  Update Tbl2
  Query  RefTblA  ## Changed Query to Fetch to avoid: '...already an open DataReader..." exception 
  Update Tbl3 using data from RefTblA
CompleteTransaction

并且当方法isSiteInherited为true时中断,否则返回false ...这是我做的

0[3],3[4,5],6[2]

如果没有发现站点继承返回false,如果它进入break,它应该从所有方法中断...所以这个方法有什么问题

2 个答案:

答案 0 :(得分:0)

似乎想要return而不是休息。如果不使用标签,break只能让你脱离一层循环,在这种情况下,你需要报告整体成功,这不是你当前的方法所做的事情。

private boolean isInherited() {
    for (Entry<Integer, Set<Integer>> entry : siteIndeciesMap.entrySet()) {
        for (Integer index : entry.getValue()) {
            if (isSiteInherited(index)) {
                return true;
            }
        }
    }
    return false;
}

答案 1 :(得分:-1)

您可以使用标签从外部循环中断(https://stackoverflow.com/a/886979/4949918)。

更好的方法可能是使用布尔值表示你已经从外循环的内循环中断开了。

  private boolean isInherited() {
  boolean isInherited = false;
  boolean shouldBreak = false;
    for (Entry<Integer, Set<Integer>> entry : siteIndeciesMap.entrySet()) {
      for (Integer index : entry.getValue()) {
          if(isSiteInherited(index)){
              shouldBreak = true;
              break;
          }
      }
      if (shouldBreak) {
           break;
      }
    }
    return false;
  }