【问题标题】:Enhanced for loop Java to run until specific index?增强for循环Java运行直到特定索引?
【发布时间】:2020-02-09 06:06:12
【问题描述】:

我正在学习如何使用增强的 for 循环。 想象一个大小为 1000 的数组,称为 arr。 写作

for(T x: arr) { /* blah blah */ }

将遍历整个数组。我知道我可以在循环体内使用break; 打破循环。

有没有办法在特定的索引值处停止循环执行?

可以这样写吗?

for (T x: arr[500]) {/* blah blah */}

这样我就可以避免使用计数器?

【问题讨论】:

  • 是什么阻止您使用subArray?。您可以简单地将subArray 定义为IntStream.range(0, 500) .map(i -> src[i]) .toArray();
  • 如果你想要索引你需要使用“常规”for循环for(int i = 0;...}
  • Arrays.stream(arr).limit(500).forEach(x -> /* blah blah */);

标签: java arrays for-loop foreach


【解决方案1】:

简而言之:没有。为此,您应该使用“普通”for 循环:

for (int i = 0; i < someCondition; i++) {
  if (i < someNumber) {
    break;
  }
}

【讨论】:

    【解决方案2】:

    如果您希望增强循环在特定索引值处停止,您应该自己跟踪索引。您可以执行以下操作:

        int index = 0;
        for(T x: arr) {
            if(index==10) {
                break();   
            }
    
            //do whatever you want to do here before index value becomes 10.        
            index++;
    
        }
    

    您可以采取其他方法,但这是最简单的方法。

    【讨论】:

      【解决方案3】:

      你可以用这个代替你的代码

      for(var i=0;i<500;i++){
      T x=arr[i];
       //your code
      
      }
      

      【讨论】:

        【解决方案4】:

        您可以执行以下操作,但在这种情况下最好使用条件循环。

        for(T x: Arrays.copyOfRange(arr, 0, 500)) {}
        

        【讨论】:

          【解决方案5】:

          如果您使用的是 java 8+,实际上您可以通过使用原始源数组的子数组来做同样的事情

          int[] subarray = IntStream.range(0, 500)
                                  .map(i -> src[i])
                                  .toArray();
          //then do 
          for (T x: subarray) {/* blah blah */}
          
          

          或者你可以使用 lambda 流来实现同样的效果:

          Arrays.stream(arr).limit(500).foreach(x -> {/* blah blah */});
          
          

          【讨论】:

          • 第一个sn-p也需要Java 8。
          【解决方案6】:

          我认为,您正在寻找执行此操作的语法方式,而不是实现该效果的解决方法。 如果我是正确的,那么 - 不,没有办法在增强的 for 循环中指示中断索引,这就是为什么存在增强的 for 循环的想法之一 - 只是告诉编译器在连续的所有对象上迭代方式。根据您的要求,如果您想在特定索引上破坏它,那么您实际上是在破坏增强 for 循环的目的之一。

          这样做的原因是,增强的 for 循环在内部获取迭代器对象并迭代集合,直到迭代器有下一个元素。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-01-20
            • 1970-01-01
            • 2020-03-14
            • 1970-01-01
            • 2013-06-14
            • 2013-12-05
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多