增强了循环Java运行到特定索引的能力?
我正在学习如何使用增强for循环。 想象一个大小为1000的数组,称为arr。 书写增强了循环Java运行到特定索引的能力?,java,arrays,for-loop,foreach,Java,Arrays,For Loop,Foreach,我正在学习如何使用增强for循环。 想象一个大小为1000的数组,称为arr。 书写 for(tx:arr){/*blah blah*/} 将遍历整个阵列。我知道我可以使用break来打破循环在循环体内部 有没有办法在特定索引值处停止循环执行 可以写这个吗 for (T x: arr[500]) {/* blah blah */} 因此,我可以避免使用计数器?简言之:否。要做到这一点,您应该使用循环的“普通”: for (int i = 0; i < someCondition; i++
for(tx:arr){/*blah blah*/}
将遍历整个阵列。我知道我可以使用break来打破循环代码>在循环体内部
有没有办法在特定索引值处停止循环执行
可以写这个吗
for (T x: arr[500]) {/* blah blah */}
因此,我可以避免使用计数器?简言之:否。要做到这一点,您应该使用
循环的“普通”:
for (int i = 0; i < someCondition; i++) {
if (i < someNumber) {
break;
}
}
for(int i=0;i
您可以执行以下操作,但在这种情况下最好使用条件循环
for(T x: Arrays.copyOfRange(arr, 0, 500)) {}
如果您使用的是Java8+,那么实际上可以通过使用原始源数组的子数组来执行相同的操作
int[] subarray = IntStream.range(0, 500)
.map(i -> src[i])
.toArray();
//then do
for (T x: subarray) {/* blah blah */}
或者您可以使用lambda streams来实现相同的功能:
Arrays.stream(arr).limit(500).foreach(x -> {/* blah blah */});
如果希望增强循环在特定索引值处停止,则应该自己跟踪索引。您可以执行以下操作:
int index = 0;
for(T x: arr) {
if(index==10) {
break();
}
//do whatever you want to do here before index value becomes 10.
index++;
}
您可以采用其他方法,但这是最简单的方法。您可以使用此方法而不是代码
for(var i=0;i<500;i++){
T x=arr[i];
//your code
}
for(var i=0;i我认为,您正在寻找实现这一点的语法方法,而不是实现这一效果的变通方法。
如果我是正确的,那么-不,没有办法指出增强for循环中的中断索引,这就是增强for循环存在的原因之一-告诉编译器以连续的方式迭代所有对象蚂蚁在特定的索引上打破它
原因是,增强for循环在内部使用迭代器对象并在集合上迭代,直到迭代器有下一个元素。是什么阻止您使用子数组
?。您可以简单地将子数组定义为IntStream.range(0500).map(i->src[i]).toArray();
如果需要索引,则需要对循环for(int i=0;…}
Arrays.stream(arr).limit(500).forEach(x->/*blah*/);
第一个代码段还需要Java 8。