Java 限制每个循环的输入

Java 限制每个循环的输入,java,loops,foreach,Java,Loops,Foreach,我是Java的初学者,也是一名地理信息学的学生 我使用的是XTF图像,其效果类似于TIFF。这个图像存储了大约20000行称为ping的信息:坐标、开始时间、停止时间。。。我在Intellij上使用的治疗方法太重了,但效果很好。 我想将存储在XTF图像中的信息分为两部分: 一幅图像包含10000次第一次ping,另一幅图像包含20000次最后ping。稍后我会收集这两张图片。 我的问题很简单:使用“for-each”循环,我如何订购一个限制(如果必须使用增强的for循环,则必须引入自己的计数器以

我是Java的初学者,也是一名地理信息学的学生

我使用的是XTF图像,其效果类似于TIFF。这个图像存储了大约20000行称为ping的信息:坐标、开始时间、停止时间。。。我在Intellij上使用的治疗方法太重了,但效果很好。 我想将存储在XTF图像中的信息分为两部分: 一幅图像包含10000次第一次ping,另一幅图像包含20000次最后ping。稍后我会收集这两张图片。
我的问题很简单:使用“for-each”循环,我如何订购一个限制(如果必须使用增强的for循环,则必须引入自己的计数器以测试迭代次数:

int limit = 0;
for (XtfPing ping : xtf.getPings())
{
    if (limit <= 10000) {
        // do something
    } else {
        // do something else
    }
    limit++;
}

我知道这并不完全适合OP的情况,但这可能会帮助其他人使用Java 8实现迭代限制:

List<Object> myList = ...
List<Object> first10000 = myList.stream().limit(10000).collect(Collectors.toList());

for (Object obj : first10000) {
    // do stuff
}
List myList=。。。
List first10000=myList.stream().limit(10000).collect(Collectors.toList());
对于(对象对象对象:first10000){
//做事
}
或者更简单地说:

List<Object> myList = ...
myList.stream().limit(1000).forEach(o -> {
    // do stuff
});
List myList=。。。
myList.stream().limit(1000).forEach(o->{
//做事
});

您可以使用
int
递增每个循环,使用
中断;
停止for循环

 int i = 0;
 for (XtfPing ping : xtf.getPings()) {
     (if i <= amountOfLoops) {
        writer.write( Double.toString( ping.x) );
        writer.write( "," );
        writer.write( Double.toString( ping.y) );
        writer.write( "\n" );
     } else {break;}
 }
 writer.close();
inti=0;
对于(XtfPing ping:xtf.getPings()){

(如果我想知道
getPings()
返回的是什么数据结构?列表、集合等?还有,您使用的是什么java级别?谢谢!它工作得非常好,非常简单!)对于第二个解决方案,我有一个例外:java.lang.IndexOutOfBoundsException:索引:19101,大小:19101@Manimalis也许你写了
,如果OP能利用stream,这应该是可以接受的答案。这是正确的方法,正是我想要的。
List<Object> myList = ...
myList.stream().limit(1000).forEach(o -> {
    // do stuff
});
 int i = 0;
 for (XtfPing ping : xtf.getPings()) {
     (if i <= amountOfLoops) {
        writer.write( Double.toString( ping.x) );
        writer.write( "," );
        writer.write( Double.toString( ping.y) );
        writer.write( "\n" );
     } else {break;}
 }
 writer.close();